当我需要在模型中使用相关数据时,我设置了一对密钥(id_item
和id
),查询将是这样的 -
... 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
。
我该怎么做?
答案 0 :(得分:0)
您不应该在ON部件中有查询条件。 ON-part应该将查询表链接到您加入的表。
您实际要做的是,您尝试过滤数据。但过滤与关系无关。
所以,你应该保持你的关系(甚至可以删除indexBy('language')
部分!)并执行你的查询:
$categories = Category::find()
->andWhere(['between', 'left', 1, 10])
->joinWith('translate')
->indexBy('language');