在我的应用程序中,我有一个Burger
模型、一个Joint
模型和一个Location
模型。
关节有很多汉堡,并且有很多位置。
我想做的是通过两种方式过滤汉堡:基于评级,还基于它们是否属于具有与条件匹配的位置的联合,在本例中为城市。
这是我尝试过的,但她没有工作:
$burgers = $this->Burger->find('all', array(
'conditions' => array('Burger.official_rating !=' => 0),
'contain' => array(
'Joint',
'Joint.Location.conditions' => array(
'Location.city' => 'Toronto'
)
),
'order' => array('Burger.official_rating DESC'),
'limit' => 10
));
Joint.Location.conditions
似乎没有效果。
编辑:现在使用连接,但不确定这是否是最有效的方法(注意,我必须添加一个 Contain 子句,以确保在结果中返回相关数据)。
$options['joins'] = array(
array('table' => 'joints',
'alias' => 'Joint1',
'type' => 'inner',
'conditions' => array(
'Joint1.id = Burger.joint_id'
)
),
array('table' => 'locations',
'alias' => 'Location2',
'type' => 'inner',
'conditions' => array(
'Location2.joint_id = Burger.joint_id'
)
)
);
$options['conditions'] = array(
'Location2.city' => 'Toronto',
'Burger.official_rating !=' => 0
);
$options['order'] = array(
'Burger.official_rating DESC',
);
$options['limit'] = 10;
$options['contain'] = array(
'Joint','Joint.Location'
);
$burgers = $this->Burger->find('all', $options);