2017-02-20 6 views
1

Я пытаюсь сделать запрос нового запроса в PlanificacionSearch, но я не знаю, как фильтровать результаты, где значение 'asistencia' имеет значение null. В приведенном ниже коде с этим условием он возвращает все элементы, игнорируя нулевое условие для этого значения.Как фильтровать данные, когда он равен нулю?

В SQL, это желаемый запрос:

SELECT asistencia FROM gestion_talleres.planificacion 
WHERE rutProfesor = <session_id> AND asistencia IS NULL 

И это вопрос я написал в Yii 2:

$query 
      ->andFilterWhere(['asistencia' => null]) 
      ->andFilterWhere(['like', 'rutProfesor', Yii::$app->user->identity->rutProfesor]); 

Условие 'rutProfesor' уже работает, но не 'asistencia' один. Мне нужна помощь.

ответ

4

При построении условий ГДЕ на основе ввода от конечных пользователей вы обычно игнорируете те входные значения, которые пусты. Например, в форме поиска, которая позволяет выполнять поиск по имени пользователя и электронной почте, вы должны проигнорировать условие имени пользователя/сообщения электронной почты, если пользователь ничего не вводит в поле ввода имени пользователя/электронной почты. Вы можете достичь этой цели, используя метод filterWhere():

http://www.yiiframework.com/doc-2.0/guide-db-query-builder.html#filter-conditions

andFilterWhere(['asistencia' => null]) работу только если значение не равно нулю

, если вам нужно проверить для нулевого состояния вам следует использовать andWhere

andWhere(['asistencia' => null]) 

, который всегда выполняется или где с несколькими значениями, например:

// ...WHERE (`status` = 10) AND (`type` IS NULL) AND (`id` IN (4, 8, 15)) 
$query->where([ 
    'status' => 10, 
    'type' => null, 
    'id' => [4, 8, 15], 
]); 

http://www.yiiframework.com/doc-2.0/guide-db-query-builder.html

0

Попробуйте так:

$query 
    ->andFilterWhere(['=', 'asistencia', null]) 
    ->andFilterWhere(['like', 'rutProfesor', Yii::$app->user->identity->rutProfesor]); 

 Смежные вопросы

  • Нет связанных вопросов^_^