Yii2模型关系

时间:2015-02-24 11:01:50

标签: php mysql yii2

当我需要在模型中使用相关数据时,我设置了一对密钥(id_itemid),查询将是这样的 -

... ON (category.id = category_translate.id_item) ...

public function getTranslate()
    {
        return $this->hasMany(CategoryTranslate::className(), 
            ['id_item' => 'id'])->indexBy('language');
    }

但如果我需要查询的ON部分,那该怎么办 - category.left between 1 and 10

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您不应该在ON部件中有查询条件。 ON-part应该将查询表链接到您加入的表。

您实际要做的是,您尝试过滤数据。但过滤与关系无关。 所以,你应该保持你的关系(甚至可以删除indexBy('language')部分!)并执行你的查询:

$categories = Category::find()
    ->andWhere(['between', 'left', 1, 10])
    ->joinWith('translate')
    ->indexBy('language');