yii2-Активная запись с не в состоянии
Я работаю над 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);
Приведенный выше запрос получит все справочные номера, которые есть в таблице опроса. Теперь я хочу добавить NOT IN
состояние. Необработанный запрос ниже
...... where ref_no LIKE '%$q%' NOT IN (select ref_no from installations where ref_no LIKE '%q%')
Как я могу добавить это к моей активной записи запроса?
Любая помощь будет высоко оценен.
2 ответа
Решение
Измените ваш запрос, как показано ниже:
$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();
Вы также можете использовать подзапрос для этого (при условии, что ваша таблица установки связана с моделью Установок)
$subQuery = Installations::find()->select('ref_no')->where("ref_no like '%$q%'");
$query = Survey::find()->where(['not in', 'ref_no', $subQuery]);
$models = $query->all();