VerbAlexVlad
@VerbAlexVlad
Программист-любитель

Как записать данный sql код в виде ActiveRecord?

SELECT param.id 
FROM param 
WHERE NOT EXISTS (
	SELECT userparam.* 
	FROM userparam 
	WHERE userparam.param_id = param.id AND userparam.user_id = 42
) 
AND EXISTS (
	SELECT catparam.* 
	FROM catparam 
	WHERE catparam.parameter_id = param.id AND catparam.category_id IN (1, 2)
)
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Приблизительно так:
$query1 = new \yii\db\Query();
$query1->select('userparam.*')
             ->from('userparam')
             ->where(['userparam.id' => 'param.id'])
             ->andWhere(['userparam.user_id' => 42])->one();
$query2 = new \yii\db\Query();
$query2->select('catparam.*')
             ->from('catparam')
             ->where(['catparam.parameter_id' => 'param.id'])
             ->andWhere(['in', 'catparam.category_id', [1,2]])->all();
$params = Param::find()
               ->select('id')
               ->where(['not exist' => $query1])->andWhere(['exists' => $query2])->all();

Подробней тут и тут.

p.s. Будут в запросе ошибки, проверить не могу.)))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы