2017-02-20 40 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

當根據最終用戶的輸入建立WHERE條件時,通常希望忽略那些空的輸入值。例如,在允許您通過用戶名和電子郵件進行搜索的搜索表單中,如果用戶未在用戶名/電子郵件輸入字段中輸入任何內容,則您將忽略用戶名/電子郵件條件。只有當值不爲空

,如果你需要檢查空條件您768,16使用andWhere

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

andFilterWhere(['asistencia' => null])工作:您可以通過使用filterWhere()方法實現這一目標

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]);