CakePHP连接模型及其自身的关系
在CakePHP连接模型及其自身的关系,php,cakephp,cakephp-2.x,Php,Cakephp,Cakephp 2.x,在Shop车型中,我有: public $belongsTo = array( 'Company' => array() ); ModelCompany在其模型类中定义了自己的关系。执行以下操作时,如何提取公司关系: $this->Shop->find('all', array( 'conditions' => array( 'Shop.loyaltycard' => 0,
Shop
车型中,我有:
public $belongsTo = array(
'Company' => array()
);
ModelCompany
在其模型类中定义了自己的关系。执行以下操作时,如何提取公司关系
:
$this->Shop->find('all',
array(
'conditions' => array(
'Shop.loyaltycard' => 0,
)
)
);
如果正确声明了关系,
find()
将自动获取关联模型的第一级,前提是您没有更改递归的默认级别(即1)
如果失败,请尝试以下操作:
$this->Shop->recursive=1;
$this->Shop->find('all',array(
'conditions' => array(
'Shop.loyaltycard' => 0,
)
));
public $belongsTo = array(
'Company'
);
更多关于模型属性的信息
另一个选项是加载Containable行为,这将允许您筛选希望获取的关系
$this->Shop->Behaviors->load('Containable'); //or make your model act as Containable
$this->Shop->contain('Company');
$this->Shop->find('all',array(
'conditions' => array(
'Shop.loyaltycard' => 0,
)
));
更多关于
此外,请将您的关系声明修改为以下内容:
$this->Shop->recursive=1;
$this->Shop->find('all',array(
'conditions' => array(
'Shop.loyaltycard' => 0,
)
));
public $belongsTo = array(
'Company'
);
不确定空数组如何影响您的关系,但它可能会导致关系失败。请注意,如果您不想查找所有相关型号,而只想添加一家公司,则仅当您遵循此操作时,此操作才有效。
$actsAs=array('Containable')代码>
在您的店铺模型中,然后按如下方式进行搜索:
$this->Shop->find('all',array(
'conditions' => array(
'Shop.loyaltycard' => 0,
),'contain' => array(
'Company'
));
请参阅cakephp containable