我想在ActiceRecord扩展的类$link
函数中的hasMany
数组中使用OR运算符。
例如,我想获得与用户帐户相关的交易。在sql中它会像SELECT * FROM transactions WHERE fromAccountId = :id OR toAccountId = :id
但是如何使用Yii2
public function getTransactions() {
return $this->hasMany(Transaction::className(), [
'fromAccountId' => 'id',
'toAccountId' => 'id'
]);
}
答案 0 :(得分:0)
你可以使用find(),它不是很好,但做的工作:
return $this->find()->join('LEFT JOIN', 'transaction', 'fromAccountId = id OR toAccountId = id')->all();
也许你必须使用tablename.id!
答案 1 :(得分:-2)
我没试过这个,但你可以试试像
这样的东西public function getTransactions() {
return $this->hasMany(Transaction::className(), ['1' => '1'])->where('fromAccountId = id OR toAccountId = id');
}
我们的想法是创建一个没有条件(或具有虚拟条件)的连接,然后使用where来获得所需的实际结果。这可能意味着一个巨大的性能问题。