Hello, I'm new on the forum but I'm using Grocery CRUD for a few days now and I'm really impressed with its possibilities, but going further I've came across this situation and can't figure it out how it should be done.
I have three tables:
people (id, name)
for example:
1, Person Name
2, Other Name
attributes (id, attribute)
for example:
1, photo
2, birthday
3, bio
and so on...
__people_attributes (id, person_id, attribute_id, value)
for example:
1, 1, 1, http://url_to_photo
2, 1, 2, 1987-06-05
3, 1, 3, bio of the person of id 1
and so on...
I created this method:
public function people() { $crud = new grocery_CRUD(); $crud->set_subject('person', 'people'); $crud->set_table('people'); $crud->columns('id', 'name', 'attributes'); $crud->unique_fields(array('name')); $crud->display_as('id', 'Person ID') ->display_as('name', 'Person Name') ->display_as('attributes', 'Attributes'); $crud->set_relation_n_n( 'attributes', '__people_attributes', // junction table 'attributes', 'person_id', 'attribute_id', 'value' ); $output = $crud->render(); $this->_example_output($output); }
But it returns the following error:
Unknown column 'attributes.value' in 'field list'
SELECT `people`.*, (SELECT GROUP_CONCAT(DISTINCT attributes.value) FROM attributes LEFT JOIN __people_attributes ON __people_attributes.attribute_id = attributes.id WHERE __people_attributes.person_id = `people`.id GROUP BY __people_attributes.person_id) AS attributes FROM `people`
I'm aware of that it should get the value field from the __people_attributes table but it's getting the value field from the attributes table instead.
How can rewrite my code?
I want to be able to add values to the particular attributes for each person I'm adding or editing.
Thank you.