Yii框架 - 有关于为关系设置“INNER JOIN”的问题

时间:2012-10-10 09:34:16

标签: yii inner-join relationship

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

  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 个答案:

答案 0 :(得分:0)

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

$inventory_condition['together']=true;

但如果您要将其与SQL LIMIT一起使用,请务必小心。