我有以下型号:
Carrier
,Store
,Classification
。
情况如下:
Carrier
HABTM Store
和Store
HABTM Carrier
。
Carrier
还 hasMany Classification
。
在过去的8个小时左右的时间里,我一直在努力让所有Carriers
获得Store.id = 152
。
我遇到问题的地方是,我希望生成的数组包含来自Classification
的{{1}}。我也希望按Carriers
排序。
我尝试了很多东西。我的所有答案都得到了Classifications
没有包含carriers
或得到所有 classifications
并包含carriers
的答案。
我试过可以容纳它似乎没有限制结果,它似乎抓住了所有的运营商,如果他们不是正确的商店,就把商店留空。
我试过加入但是我也无法成功地完成这项任务。
我可能做错了什么,但我不能为我的生活搞清楚。
代码
classifications
答案 0 :(得分:0)
我发现的一个解决方案在于创建habtm模型并使用contains和manual join子句为此创建条件。
型号代码如下:
store.php
<?
class Store extends AppModel {
var $actsAs = array('Containable');
var $hasMany = array('CarriersStore');
}
?>
carrier.php
<?
class Carrier extends AppModel {
var $actsAs = array('Containable');
var $hasMany = array('CarriersStore');
}
?>
carriers_store.php
<?
class CarriersStore extends AppModel {
var $belongsTo = array('Store', 'Carrier');
var $actsAs = array('Containable');
}
?>
然后,在carriers_controller.php
中应用条件并获得Store和Carrier模型的棘手语法是:
$carriers = $this->Carrier->find('all', array(
'conditions' => array('CarrierStore.store_id' => 1),
'contain' => array('CarriersStore' => array('Store')),
'joins' => array(
array(
'table' => 'carriers_stores',
'alias' => 'CarrierStore',
'type' => 'INNER',
'conditions' => array('CarrierStore.carrier_id = Carrier.id')
)
)
));
我希望这会有所帮助。这个问题困扰了我很多时间,直到最近我才找到了这个解决方法。