@EvgMul

Как составить запрос between в Yii2?

Здравствуйте. Не получается правильно составить запрос between средствами Yii2.
На данный момент у меня есть вот такой вариант:
$ips = Ip::find()->where("'$userIp' between ip_start and ip_end")->one();

Но он мне не нравится тем, что во where передается строка.
Гугл выдал мне вот такой вариант:
$model = ModelName::find()->where(['between', 'date', "2015-06-21", "2015-06-27" ])->all();

Но этот запрос делает несколько другую операцию.
Мне нужно, чтобы запрос находил запись, которая удовлетворяет условию, чтобы мое значение было в границах 2-х полей.
Второй же запрос находит записи, границы которого указаны для одного поля.
Подскажите пожалуйста, можно ли, и если можно, то как можно составить запрос средствами Yii2?
Ну или хотя бы сделать текущий запрос более безопасным?
Заранее благодарен всем отозвавшимся.
  • Вопрос задан
  • 6104 просмотра
Решения вопроса 2
@davidnum95
$ips = Ip::find()
                ->where(['>', 'ip_start', $userIp])
                ->andWhere(['<', 'ip_end', $userIp])
                ->one();
Ответ написан
Комментировать
padlyuck
@padlyuck
$ips = Ip::find()->where(':userIp between ip_start and ip_end')->params([':userIp'=>$userIp])->one();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Цитирую доки:
between: operand 1 should be the column name, and operand 2 and 3 should be the starting and ending values of the range that the column is in. For example, ['between', 'id', 1, 10] will generate id BETWEEN 1 AND 10
https://github.com/yiisoft/yii2/blob/master/docs/g...
Ответ написан
Ваш ответ на вопрос

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

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