Всем привет
Я не могу понять как мне решить проблему с MANY_MANY. Есть 3 таблицы
- tbl_recipe
Field Type Collation Attributes Null Default Extra Action
id int(11) No None auto_increment
user_id int(11) No None
name varchar(255) utf8_general_ci No None
text longtext utf8_general_ci No None
instruction text utf8_general_ci No None
- tbl_ingredient
Field Type Collation Attributes Null Default Extra Action
id int(11) No None auto_increment
name varchar(100) utf8_general_ci No None
unit_id int(11) No None
- tbl_recipe_ingredient
Field Type Collation Attributes Null Default Extra Action
recipe_id int(11) No None
ingredient_id int(11) No None
value int(11) No None
tbl_recipe хранит информацию о рецептах. tbl_ingredient Хранит информация об ингредиентах (яйца, мясо, …) tbl_recipe_ingredient служит для связи MANY_MANY этих двух таблиц. В этой таблице есть поле value которое отвечает за количество какого-то ингредиента. Т.е. например 200 грамм мяса, 3 яйца и т.д.
Проблема в том, что я не понимаю как получить value с помощью Active Record. Если написать так
public function relations()
{
return array(
'ingredients'=>array(self::MANY_MANY, 'Ingredient',
'tbl_recipe_ingredient(recipe_id, ingredient_id)',
),
);
}
все работает, но нет доступа собственно к value.
А если так
public function relations()
{
return array(
'ingredients'=>array(self::MANY_MANY, 'Ingredient',
'tbl_recipe_ingredient(recipe_id, ingredient_id)',
'select' => 'tbl_ingredient.*, `tbl_recipe_ingredient`.`value`'
),
);
}
То появляется ошибка
Active record "Ingredient" is trying to select an invalid column "`tbl_recipe_ingredient`.`value`". Note, the column must exist in the table or be an expression with alias.