我在使用关系获取数据方面遇到了问题。以下是详细信息:
我有两张桌子。首先是 item_master ,其次是库存表。由于两者都有MANY_MANY关系,因此我们有另一个名为 inventory_items 的表,其中包含两个字段(item_id,inventory_id)。
以下是ItemMaster模型中的关系细节:
'inventories' => array(
self::MANY_MANY,
'Inventories',
'inventory_items(item_id, inventory_id)'
),
'inventoryItems'=>array(self::HAS_MANY,'InventoryItems','item_id'),
我只需要获取特定广告资源的项目。为此,我正在实施以下过滤条件:
$criteria=new CDbCriteria;
$inventory_condition['condition']="inventoryItems.inventory_id=:inventoryID";
$inventory_condition['params'] = array(
':inventoryID' => $filter['inventory_id']
);
$inventory_condition['joinType']='INNER JOIN';
$criteria->with = array("inventoryItems"=>$inventory_condition);
$items=new CActiveDataProvider('ItemMaster',array('criteria'=>$criteria));
问题:
以上代码将返回包含所需库存的所有商品。如果一个项目不属于该库存,那么它仍会返回该项目,但没有库存。我只需要那些属于特定库存的物品应该返回。
答案 0 :(得分:0)
您可能需要将together
选项设置为true
:
$inventory_condition['together']=true;
但如果您要将其与SQL
LIMIT
一起使用,请务必小心。