yii2-不在条件下的活动记录

yii2-Active record with not in condition

我正在研究 yii2。我正在使用活动记录来搜索参考号。查询如下

$q = isset($_GET['q']) ? $_GET['q'] : '';
    if(empty($q)) exit;
    $ser = Survey::find()->where("ref_no like '%$q%'")->andWhere(['status'=>1])->asArray()->all();

    return json_encode($ser);

以上查询将获取调查 table 中的所有参考编号。现在我想添加一个 NOT IN 条件。原始查询如下

...... where ref_no LIKE '%$q%' NOT IN (select ref_no from installations where ref_no LIKE '%q%')

如何将其添加到我的活动记录查询中?

非常感谢任何帮助。

如下更改您的查询:

$ser = Survey::find()->where("ref_no like '%$q%'")
->andWhere(['status'=>1])
->andWhere("ref_no NOT IN (select ref_no from installations where ref_no LIKE '%q%')")
->asArray()->all();

$ser = Survey::find()
->where("ref_no like '%$q%' AND ref_no NOT IN (select ref_no from installations where ref_no LIKE '%q%')")
->andWhere(['status'=>1])
->asArray()->all();

您也可以为此使用子查询(假设您的安装 table 我与安装模型相关)

  $subQuery = Installations::find()->select('ref_no')->where("ref_no like '%$q%'");
  $query = Survey::find()->where(['not in', 'ref_no', $subQuery]);
  $models = $query->all();