1

我在使用关系获取数据时遇到问题。以下是详细信息:

  1. 我有两张桌子。首先是item_master,其次是库存表。由于两者都有 MANY_MANY 关系,所以我们有另一个名为inventory_items的表,其中包含两个字段(item_id、inventory_id)。

  2. 以下是 ItemMaster 模型中的关系详细信息:

    'inventories' => array(
        self::MANY_MANY, 
        'Inventories', 
        'inventory_items(item_id, inventory_id)'
    ),
    
    'inventoryItems'=>array(self::HAS_MANY,'InventoryItems','item_id'),
    
  3. 我只需要获取特定库存的项目。为此,我正在实施以下过滤条件:

    $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));
    

问题:

上面的代码将所有具有所需库存的物品归还给我。如果一个项目不属于该库存,它仍然会返回该项目但没有库存。我只需要那些属于特定库存的物品应该返回。

4

1 回答 1

0

您可能需要将together选项设置为true

$inventory_condition['together']=true;

但是,如果你打算将它与SQL LIMIT.

于 2012-10-10T13:32:13.233 回答