我一直在墙上敲我的头。我有一个模型Sku属于模型购买。我的AppModel有$actAs=array('Containable') and $recursive=-1
在SkuController内部,当我$this->Sku->find('all', array('contain' => 'Purchase'));
时,我没有购买。我在这里和互联网上的其他地方搜索过许多旧问题,但似乎无法解决这个问题。要检查是否正在加载Containable行为,我在lib \ Cake \ Model \ Behavior中编辑了ContainableBehavior.php,使其成为无效的php文件,但没有产生任何错误。真是太糟糕了!!
以下是调试中的SQL:
选择
Sku
。id
,Sku
。purchase_id
,Sku
。item_id
,Sku
。{{1} },upc
。Sku
,quantity_avail
。Sku
,per_unit_price_amt
。Sku
,do_not_delete
。Sku
,created
。Sku
, (concat('SK',lpad(modified
。Sku
,8,'0')))ASid
FROMSku__idFormatted
。sellble
ASskus
WHERE 1 = 1 ORDER BYSku
。Sku
desc
CakePHP ver:2.4.4
答案 0 :(得分:1)
不确定版本之间是否有所不同,但我总是在数组中指定包含,这对我来说很合适。
$this->Sku->find('all', array('contain' => array('Purchase')));
或者仅映射您想要的字段或条件:
$this->Sku->find('all',
array('contain' => array(
'Purchase' => array(
'fields' => Purchase.name
'conditions' => array(
Purchase.name = 'somename'
)
)
)
)
);