深层联想的CakePHP条件
我使用containable有一些深层次的关联,需要过滤回结果。对于这个问题,假设我们正在销售汽车,并希望通过功能缩小结果范围 汽车有许多品牌有许多型号HABTM功能深层联想的CakePHP条件,cakephp,associations,conditional-statements,containable,Cakephp,Associations,Conditional Statements,Containable,我使用containable有一些深层次的关联,需要过滤回结果。对于这个问题,假设我们正在销售汽车,并希望通过功能缩小结果范围 汽车有许多品牌有许多型号HABTM功能 $options = array( 'order' => array('Car.price'), 'contain' => array( 'make', 'model' => array( 'order' => 'Model.name
$options = array(
'order' => array('Car.price'),
'contain' => array(
'make',
'model' => array(
'order' => 'Model.name ASC'
),
'features'
)
);
$cars = $this->Car->find('all', $options);
如何排除所有没有电动车窗(Features.name!=电动车窗)的车辆。
Containable
仅适用于您指定在获取数据时要包括的车型,但不限制父车型获取数据。一个明显的症状是,有时您的父数据可能包含一些null
数据
因此,为了实现它,我认为我们应该在这里使用连接
,以便您可以指定条件:
$options = array(
'order' => array('Car.price'),
'contain' => array(
'make',
'model' => array(
'order' => 'Model.name ASC'
),
'features'
),
'joins' => array(
array(
'table' => 'features',
'alias' => 'Feature',
'type' => 'LEFT',
'conditions' => array(
'Car.id = Feature.car_id'
)
)
),
'conditions' => array(
'Features.name !=' => 'power_windows',
)
);
但这样做的一个缺点是,您可能因为加入而复制了
汽车。这是另一个问题;) 谢谢,莱昂内尔,我不知道你能同时使用这两个。。。这打开了许多可能性!