子查询返回数组时如何在yii中添加子查询

时间:2015-09-15 19:01:01

标签: php mysql yii

我正在开发一个API,其中我有两个表1用于库,第二个用于已发行的书。我们可以向任何用户发行5本书。我正在开发一个API,我需要检查是否有任何用户已经分配了一本书,然后他不会向他发出同一本书。我使用了一个子查询。但它返回一个数组。所以我无法根据需要获取数据。我需要的是,如果我们向他发行3本书而不是书籍将以其他颜色显示。我的代码是:

$data1=(new \yii\db\Query())->select('book_id')->distinct()->from('issuedBooks')
->where('user_id=:user_id', [':user_id'=>310])->all();
$workout= (new \yii\db\Query())->select('*')->from('library')
    ->leftJoin(['issuedBooks'=>$data1],'issuedBooks.book_id=library.book_id')
    ->all();

$ data1返回一个数组,因此我的第二个查询无法正常工作。

1 个答案:

答案 0 :(得分:0)

前言:我对Yii Query Builder一无所知。但我确实知道SQL。通常,如果要从数组中传递参数化查询,则使用OR子句而不是IN()列出具有WHEREJOIN的数组项。

使用上面的链接,考虑删除连接并在第二个查询中使用where子句,并将数组$data1作为参数传递:

->where(array('in', 'book_id', $data1))