现在我有:
$products = Product::findAll([1,2,3,4]);
foreach ($products as $product){
$text = $product->part->type->texts;
}
这会返回 Texts
表中的相关记录。
但是我只需要从中获得 1 条记录,为此我需要在最后一个连接 type->texts
中有一个条件,这在模型中没有定义。它是动态 session 变量。
有什么办法吗?
最佳答案
如果您想修改最后一个关系查询以具有附加条件并返回一个记录而不是多个记录,只需像这样更改最后一个关系调用:
$text = $product->part->type->getTexts()->andWhere(...)->one();
直接关系方法调用返回 yii\db\ActiveQuery
实例,因此您可以根据需要修改条件。
如果你想在不止一个地方使用修改后的关系,请为此创建单独的方法:
/**
* @return yii\db\ActiveQuery
*/
public function getDynamicText()
{
// Insert link from texts relation similar as in hasMany() and additional condition in andWhere()
return $this->hasOne(...)->andWhere(...);
}
然后使用它:
$text = $product->part->type->dynamicText;
关于database - Yii2 在链关系的最后一个添加条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28589584/