Active Record 中的 Yii2 子查询
Yii2 subquery in Active Record
如何将此 sql 转换为活动记录查询
SELECT * FROM `base_twitter` WHERE id NOT IN (SELECT base_id from base_followers)
假设您的模型相应地命名为 BaseTwitter
和 BaseFollower
,这应该有效:
$subQuery = BaseFollower::find()->select('id');
$query = BaseTwitter::find()->where(['not in', 'id', $subQuery]);
$models = $query->all();
// SELECT * FROM (SELECT * FROM `user` WHERE `active` = 1) `activeusers`;
$subquery = (new \yii\db\Query)->from('user')->where(['active' => true])
$query = (new \yii\db\Query)->from(['activeusers' => $subquery]);
// subquery can also be a string with plain SQL wrapped in parenthesis
// SELECT * FROM (SELECT * FROM `user` WHERE `active` = 1) `activeusers`;
$subquery = "(SELECT * FROM `user` WHERE `active` = 1)";
$query = (new \yii\db\Query)->from(['activeusers' => $subquery]);
试试这个查询
$models = BaseTwitter::find()->where('id NOT IN (SELECT base_id from base_followers)')->all();
如何将此 sql 转换为活动记录查询
SELECT * FROM `base_twitter` WHERE id NOT IN (SELECT base_id from base_followers)
假设您的模型相应地命名为 BaseTwitter
和 BaseFollower
,这应该有效:
$subQuery = BaseFollower::find()->select('id');
$query = BaseTwitter::find()->where(['not in', 'id', $subQuery]);
$models = $query->all();
// SELECT * FROM (SELECT * FROM `user` WHERE `active` = 1) `activeusers`;
$subquery = (new \yii\db\Query)->from('user')->where(['active' => true])
$query = (new \yii\db\Query)->from(['activeusers' => $subquery]);
// subquery can also be a string with plain SQL wrapped in parenthesis
// SELECT * FROM (SELECT * FROM `user` WHERE `active` = 1) `activeusers`;
$subquery = "(SELECT * FROM `user` WHERE `active` = 1)";
$query = (new \yii\db\Query)->from(['activeusers' => $subquery]);
试试这个查询
$models = BaseTwitter::find()->where('id NOT IN (SELECT base_id from base_followers)')->all();