如何摆脱cakephp 2.x中的空关联模型
我正在尝试获取Order.item.ItemType.show\u type=1的项目类型。我已经编写了查询,但我只想显示ItemType.show_type=1的项,而不是所有项如何摆脱cakephp 2.x中的空关联模型,cakephp,cakephp-2.x,Cakephp,Cakephp 2.x,我正在尝试获取Order.item.ItemType.show\u type=1的项目类型。我已经编写了查询,但我只想显示ItemType.show_type=1的项,而不是所有项 $brief = $this->Order->find('first', array( 'fields' => array( 'Order.*' ), 'conditions' => arr
$brief = $this->Order->find('first', array(
'fields' => array(
'Order.*'
),
'conditions' => array(
'Order.order_id' => $orderId,
),
'contain' => array(
'Item' => array(
'fields' => array(
'Item.*', 'CHAR(64 + Item.num) AS letter'
),
'conditions' => array(
'Item.deleted' => 0,
),
'ItemType' => array(
'conditions' => array(
'ItemType.show_type' => 1
),
)
),
)
));
查询不应显示项id=25741
协会:
// Order
public $hasMany = array(
'BriefInstalment' => array(
'foreignKey' => 'order_id'
)
);
// Item Model
public $belongsTo = array(
'Order',
'ItemType' => array(
'type' => 'inner'
)
);
// ItemType Model
public $hasMany = array('Item');
打印:
array(
'Order' => array(
'order_id' => '67817',
'service' => '',
),
'Item' => array(
(int) 0 => array(
'id' => '25741',
'order_id' => '67817',
'num' => '2',
'item_type_id' => '8',
'name' => '3-5 titles active',
'deleted' => false,
'ItemType' => array(), // <= how to remove this empty model
'Item' => array(
(int) 0 => array(
'letter' => 'B'
)
)
),
(int) 1 => array(
'id' => '25742',
'order_id' => '67817',
'num' => '3',
'item_type_id' => '2',
'name' => '1,000 pro active',
'deleted' => false,
'ItemType' => array(
'id' => '2',
'name' => 'Part Instalment',
'show_type' => true,
'deleted' => false
),
'Item' => array(
(int) 0 => array(
'letter' => 'C'
)
)
)
)
)
这不能用可数行为来实现,但我使用该方法,将递归设置为-1 您必须检查表名和外键名是否正确 另一个解决方案是检查结果,并取消空结果的设置
foreach($brief as $k => $v){
foreach($v['Item'] as $kk => $vv){
if(empty($vv['ItemType'])){
unset($brief[$k]['Item'][$kk];
}
}
}
debug($brief);
你能分享你的模型和他们的联系吗
foreach($brief as $k => $v){
foreach($v['Item'] as $kk => $vv){
if(empty($vv['ItemType'])){
unset($brief[$k]['Item'][$kk];
}
}
}
debug($brief);