Как написать запрос если переменная пустая?

Как правильно написать запрос через Yii::app()->db->createCommand(), если в условии переменная может оказаться пустой?
$sql = $db->createCommand()
                ->select('`id`, `sub_id`, `min_price`,
                ->from('table')
                ->where("sub_id=$sub_id")
                ->query();
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
$sql = $db->createCommand()
     ->select(['id', 'sub_id', 'min_price']),
    ->from('table');
if(!empty($sub_id)){
    $sql->where(['sub_id' => $sub_id]);
}
$sql->query();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
usdglander
@usdglander
Yipee-ki-yay
Использовать filterWhere()
Ответ написан
Комментировать
@alexalexes
Если метод where может принимать пустую строку, то так.
where(isset($sub_id) ? "sub_id=$sub_id" : "")
Пустота может быть разная.
Если у вас пусто это '', то нужно сравнивать так:
$sub_id !== ''

Если null, то так
!is_null($sub_id)
Ответ написан
Комментировать
VladimirAndreev
@VladimirAndreev
php web dev
не проще ли так:

$query = new \yii\db\Query();

$query->createCommand()->queryAll();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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