我正在开发一个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返回一个数组,因此我的第二个查询无法正常工作。
答案 0 :(得分:0)
前言:我对Yii Query Builder一无所知。但我确实知道SQL。通常,如果要从数组中传递参数化查询,则使用OR
子句而不是IN()
列出具有WHERE
或JOIN
的数组项。
使用上面的链接,考虑删除连接并在第二个查询中使用where子句,并将数组$data1
作为参数传递:
->where(array('in', 'book_id', $data1))