2017-09-27 2 views
1

조건부 where 절이있는 yii2 쿼리가 있습니다. 이 내 쿼리입니다 : 내가 다른 사람으로부터 어떤 질문을 읽고 내가 발견하는 MySQL의 테이블 필드입니다 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(); 

:

변수가 비어있는 경우
->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]) 

참고 : 빈 배열 빈 문자열 않거나 공백으로 이루어지는 문자열이 널이면 값이 비어있는 것으로 간주된다.

+0

일반적인 where 절에 대한 작업 및 where 절 사이에서도 작동합니다. 고마워. – biladina

+0

@biladina 여러분 환영합니다. :) – paul