Поиск записи в отношениях HABTM - CakePHP - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть таблица store и store_details, а теперь таблица store_details_stores.

Модель магазина имеет следующее:

public $hasAndBelongsToMany = array('StoreDetail');

Модель StoreDetail имеет следующее:

public $hasAndBelongsToMany = array('Store');

Когда я пытаюсь выполнить приведенный ниже запрос в store_controller, я получаю ошибку sql. По какой-то причине таблица store_details не объединяется естественным образом. Это ожидаемое поведение? Нужно ли присоединяться к этой таблице вручную?

$this->Store->find('all', array('conditions' => array('StoreDetail.name' => 'Parking')));

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Это ожидаемое поведение. Вам нужно настроить вызов bindModel с вашими условиями, или вы можете создать модель для таблицы соединений и запросить ее напрямую.

См:

CakePHP Book - HABTM

Моделирование таблиц соединения HABTM

$this->Store->bindModel(array(
    'hasAndBelongsToMany' => array(
            'StoreDetail' => array('conditions'=>array('StoreDetail.name' => 'Parking')
))));
$this->Store->find('all');
0 голосов
/ 06 декабря 2011

Я бы порекомендовал применить условие к ассоциации, прежде чем делать поиск, используя метод bindModel .

/**
 * Apply a condition to the association
 */
$this->Store->bindModel(array(
    'hasAndBelongsToMany' => array(
        'StoreDetail' => array('conditions' => array('StoreDetail.name'=>'Parking'))
)));

/**
 * Find all Stores that have an associated StoreDetail.name of 'Parking'
 */
$this->Store->find('all');
...