在CakePHP 3中,ORM发生了变化,我找不到从数据库中选择所需数据的正确方法。
在CakePHP 2中,我使用contain('User.name','User.id')
,但在CakePHP 3中,此代码不起作用。
那么我如何才能从用户中选择id
和name
?
代码:
$query = $data->find()->contain(['Users'])->execute()->fetchAll('assoc');
// I want only user.id and user.name.
答案 0 :(得分:1)
$articles = $this->Model->find()
->select(['fields_you_want_from_this_Model'])
->contain(['Assoc_Model' => function($q) {
return $q
->select(['fields_you_want_from_the_associated_model']);
}]);
答案 1 :(得分:1)
你必须看看这个页面:http://book.cakephp.org/3.0/en/orm/query-builder.html#passing-conditions-to-contain
在某些情况下,您必须使用autoFields方法。
当你在callable中选择几个字段时要小心包含,你也总是要选择外键:
限制从关联中提取的字段时,必须确保选择了外键列。如果未选择外键字段,将导致相关数据不会出现在最终结果中。