У меня есть база данных с некоторыми отношениями. У меня есть две таблицы в этом примере:
activity_ingredients ingredient_aliases
--------------- ---------------
id id
ingredient_id ingredient_id
Я хочу внести в свою модель условия для соединения таблиц по полю "ingredient_id". Я сделал в этом режиме:
class ActivityIngredients extends AppModel{
public $name = 'ActivityIngredients';
public $useTable = 'activity_ingredients';
public $hasMany = array (
'IngredientAlias' => array (
'className' => 'IngredientAlias',
'foreignKey' => false,
'conditions' => array('ActivityIngredients.ingredient_id = IngredientAlias.ingredient_id')
)
);
}
class IngredientAlias extends AppModel {
public $name = 'IngredientAlias';
public $useTable = 'ingredient_aliases';
public $belongsTo = array(
'ActivityIngredients' => array(
'className' => 'ActivityIngredients',
'foreignKey' => false
)
);
}
Если я напишу этот код, выдайте мне такую ошибку:
Столбец не найден: 1054 Неизвестный столбец «ActivityIngredients.ingredient_id» в «предложении where»
Но если вместо hasMany я напишу hasOne, он не вернет никакой ошибки и будет идеальным. Но мое отношение hasMany.. почему?
Чтобы получить данные, я делаю запрос в свой UserController. Пользователь связан с Activity с hasMany, Activity связан с ActivityIngredients в этом режиме:
public $hasOne = array(
'ActivityIngredients' => array(
'className' => 'ActivityIngredients',
'conditions' => '',
'dependent' => true,
'foreignKey' => 'activity_id'
)
Чтобы получить данные, я использую этот запрос в данный момент, но я думаю, что теперь мне нужно изменить весь запрос
$this->User->Activity->recursive = 2;
$activity = $this->User->Activity->findAllByUser_id($id);
$this->set('activity', $activity);