我尝试在 PlanificacionSearch 中进行新的查询搜索,但我不知道如何过滤值' asistencia' 的结果仅为空。在下面的代码中,在这个条件下,它返回所有元素,忽略该值的空条件。
在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]);
&#39; rutProfesor&#39; 的条件已经有效,但不是&#39; asistencia&#39; 。我需要帮助。
答案 0 :(得分:4)
根据最终用户的输入构建WHERE条件时,通常要忽略那些空的输入值。例如,在允许您通过用户名和电子邮件进行搜索的搜索表单中,如果用户未在用户名/电子邮件输入字段中输入任何内容,则您希望忽略用户名/电子邮件条件。您可以使用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
答案 1 :(得分:0)
尝试这种方式:
$query
->andFilterWhere(['=', 'asistencia', null])
->andFilterWhere(['like', 'rutProfesor', Yii::$app->user->identity->rutProfesor]);