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/ - 它會幫助你理解發生了什麼。並向我們展示查詢) –