1
我在使用关系获取数据时遇到了一个问题。以下是细节:Yii框架 - 有关于设置“INNER JOIN”关系的问题
我有两个表。首先是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));
问题:
上面的代码返回我所有的与所需的库存物品。如果某件商品不属于该库存,则该商品将返回该商品,但不包含库存。我只需要那些只属于特定库存的物品。
你使用debuger吗?如果是,那么查看生成的查询将会很好。如果你不使用它,我建议你在这里http://www.yiiframework.com/extension/dbprofiler/ - 它会帮助你理解发生了什么。并向我们展示查询) –