CakePHP HABTM состояние

Я хочу сделать условие для моих атрибутов HABTM
У меня есть следующие отношения HABTM в CakePHP 2.x:

Practise.php

public $hasAndBelongsToMany = array(
'Attribute' => array(
'className' => 'Attribute',
'joinTable' => 'practises_attributes',
'foreignKey' => 'practise_id',
'associationForeignKey' => 'attribute_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
)
);

Attribute.php

public $hasAndBelongsToMany = array(
'Practise' => array(
'className' => 'Practise',
'joinTable' => 'practises_attributes',
'foreignKey' => 'attribute_id',
'associationForeignKey' => 'practise_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
)
);

Теперь я хочу найти все, включая условие для атрибутов в моем PractiseController.php

PractiseController.php

$cond['Attribute.id'] = array(1,2,3);
$this->Practise->find('all', array('conditions' => $cond));

Тогда я получаю следующую ошибку:

Ошибка: SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «Attribute.id» в «предложении где»

SQL-запрос:

ВЫБРАТЬ
Practise,id,
Practise,title,
Practise,body,
ОТ db,practises КАК Practise
ГДЕ Attribute,id IN (1, 2, 3)

Как я могу сделать так, чтобы CakePHP также присоединился к таблице HABTM в поисковом запросе?

0

Решение

Вы можете использовать, например, содержать

$this->Practise->find('all', array('contain' => 'Attribute.id = whatever'));

Вы также можете присоединиться вручную с помощью:

$options['joins'] = array(
array('table' => 'practises_attributes',
'alias' => 'PractiseAttribute',
'type' => 'INNER',
'conditions' => array(
'Attribute.id = whatever',
)
) );
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]