Проблема с объединениями моделей CakePHP, пропущенные поля из объединенной таблицы. - PullRequest
0 голосов
/ 16 сентября 2011

Я, наверное, здесь упускаю что-то болезненно очевидное. Я пытаюсь объединить несколько таблиц в Cake, но я получаю только поля из первой таблицы. Рассмотрим следующий код ..

$joins = array();
$joins[] =  array(
            'table' => 'products', 
            'alias' => 'Product', 
            'type' => 'LEFT',
            'conditions' => array(
                'Device.id = Product.device_id'
            )
    );

$joins[] =  array(
            'table' => 'pricepoints', 
            'alias' => 'Pricepoints', 
            'type' => 'LEFT',
            'conditions' => array(
                'Pricepoints.product_id = Product.id'
            )
    ); 
$all_products = $this->Device->find('all', array("joins" => $joins); 

И это возвращает следующий SQL

SELECT `Device`.`id`, `Device`.`manufacturer_id`, `Device`.`name`, `Device`.`type_id`, `Manufacturer`.`id`, `Manufacturer`.`name` FROM `devices` AS `Device` LEFT JOIN products AS `Product` ON (`Device`.`id` = `Product`.`device_id`) LEFT JOIN pricepoints AS `Pricepoints` ON (`Pricepoints`.`product_id` = `Product`.`id`) LEFT JOIN `manufacturers` AS `Manufacturer` ON (`Device`.`manufacturer_id` = `Manufacturer`.`id`) 

есть. он возвращает только поля из родительской модели, т.е. Устройство. Как мне получить, чтобы выбрать все поля из объединения? Я предполагаю, что это связано с тем, как у меня настроены модельные отношения, но я думаю, что они настроены правильно.

Кто-нибудь совет?

Ответы [ 2 ]

7 голосов
/ 16 сентября 2011

вы можете указать поля в запросе поиска:

$all_products = $this->Device->find('all', array("fields" => array('Device.*','Product.*','Pricepoints.*')
                                                 "joins" => $joins
); 

Надеюсь, это поможет

1 голос
/ 16 сентября 2011

Сделайте ваше соединение, вызвав bindModel () вместо того, чтобы вручную указывать соединение.См. Кулинарную книгу для деталей о создании и уничтожении ассоциаций на лету

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...