问题描述
我需要能够将查询并返回 hasMany()
的 array
关系转换为返回 hasOne()
的 object|null
关系。
用例:
public function getItems() : \yii\db\ActiveQuery {
return $this->hasMany(Item::class,['parent_id' => 'id']);
}
我想创建一个关系,该关系返回一个特定的 Item
对象(如果不存在,则返回 null
)。
我想做这样的事情:
public function getPrimaryItem() : \yii\db\ActiveQuery {
return $this->getItems()->andWhere(["primary"=>true])->toHasOne();
}
请不要告诉我在原始查询中调用 ->one()
,因为这不会解决问题。我需要能够:
- 拨打
$model->primaryItem
并收到Item
或null
- 调用
$model->getPrimaryItem()
并接收关系的ActiveQuery
解决方法
您可以通过 --net host
的 multiple
属性切换它
\yii\db\ActiveQuery