Yii2 ActiveQuery在链接数组中使用OR

时间:2014-10-14 15:59:37

标签: php mysql activerecord yii2

我想在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'
        ]);
    }

2 个答案:

答案 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来获得所需的实际结果。这可能意味着一个巨大的性能问题。