2017-09-27 15 views
1

条件付きwhere節を持つyii2クエリがあります。これは私のクエリです:Yii2 - 変数が空の場合、where節を無視します。

$query = new Query(); 

$query->select 
    (['pengeluaran.id']) 
    ->from('surat_jalan, pengeluaran') 
    ->where('surat_jalan.no_bus=:no_bus',['no_bus'=>$no_bus]) 

    //this is my conditional query 
    ->andWhere(['between', 'pengeluaran.tgl_pengeluaran', $awal, $akhir]) 
    ->andWhere('pengeluaran.nama_toko=:nama_toko',['nama_toko'=>$nama_toko]) 
    ->andWhere('pengeluaran.metode_pembayaran=:metode_pembayaran',['metode_pembayaran'=>$metode_pembayaran]) 
    ->andWhere('pengeluaran.waktu_pembayaran=:waktu_pembayaran',['waktu_pembayaran'=>$waktu_pembayaran]) 
    //this is my conditional query 

    ->andWhere('surat_jalan.id_surat_jalan=pengeluaran.id_surat_jalan'); 

$command = $query->createCommand(); 
$data_id_pengeluaran = $command->queryAll(); 

私は他の人からいくつかの質問を読んで、どのような私が見つけたことはMySQLのテーブルのフィールドのためである:変数が空である場合、私は何をしたい

->andWhere(['not', ['activated_at' => null]]); 

は、条件付きの場所()句は無視されます。それはyii2で可能ですか?

答えて

2

filterWhereは、あなたの目標を達成するのに最適なツールです。例えば

// This will not appear in the finally statement if $val is empty. 
$query->andFilterWhere(['activated_at' => $val]) 

注:空の配列、空の文字列のみ空白からなる文字列は、NULLである場合、値が空であると考えられます。

+0

共通のwhere節のために働く、そしてwhere節の間でも働く。どうもありがとう。 – biladina

+0

@biladinaようこそ。 :) – paul

関連する問題