Yii Framework CGridView filter ต้องการทำจากปกติ where LIKE '%NO%' เป็น where LIKE 'NO' ไม่มี %
CGridView filter ต้องการทำจากปกติ
where LIKE '%NO%' เป็น where LIKE 'NO' ไม่มี % ทำยังไงครับ
ปัญหาเกิดจาก CGridView filter ช่องค้นหาในคอลัมภ์ 'customerCode' ผมทำเป็น Dropdown ตามข้อมูลจริงแล้ว
สมมุติข้อมูลจริงใน Dropdown คือ
'customerCode'
1 NO
2 NOB
3 NOP
4 MON
เวลาเลือก NO ผมต้องการเฉพาะ NO อย่างเดียว แต่มันจะได้ Record ของ NOB กับ NOP มาด้วยต้องแก้ยังไงครับ
Code (PHP)
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'pre-invoice-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'selectableRows'=>2, //ให้เลือกได้หลาย ๆ รายการพร้อมกัน และมีส่วนของการ Check All ได้ด้วย
'columns'=>array(
array(
'class'=>'CCheckBoxColumn', //กำหนดให้แสดง CheckBox Component ลงไป พร้อมกำหนดชื่อได้ด้วย
'id'=>'ids'
),
array(
'name'=>'pre_Invoice_ID',
'htmlOptions'=>array('width'=>'50px'),
),
array(
'name'=>'trunk', //'header'=>'Head',
'filter'=>CHtml::dropDownList('PreInvoice[trunk]',
isset($getForm['trunk']) ? $getForm['trunk'] : '',
array('S'=>'S', 'E'=>'E', 'A'=>'A'),array('empty' => '')
),'htmlOptions'=>array('width'=>'50px'),
),
array(
'name'=>'customerCode', //'header'=>'Head',
'filter'=>CHtml::dropDownList('PreInvoice[customerCode]',
isset($getForm['customerCode']) ? $getForm['customerCode'] : '',
CHtml::listData(
PreInvoice::model()->findAll( // Source
array(
'select'=>array('customerCode'),
'distinct'=>true,
'order'=>'customerCode',
)
),'customerCode', 'customerCode' // Attribute of Tag OPTION 'value' & 'Display'
),array('empty'=>'')
),
),
array(
'name'=>'amount',
'htmlOptions'=>array('style'=>'text-align:right;'),
'footer'=>'Total: '.$model->getTotal($model->search()->getData(), 'amount'),
'footerHtmlOptions'=>array('style'=>'text-align:right;', 'class'=>'amount-total'),
),
array(
'name'=>'importDate', //'header'=>'Head',
'filter'=>CHtml::dropDownList('PreInvoice[importDate]',
isset($getForm['importDate']) ? $getForm['importDate'] : '',
CHtml::listData(
PreInvoice::model()->findAll( // Source
array(
'select'=>array('importDate'),
'distinct'=>true,
'order'=>'importDate',
)
),'importDate', 'importDate' // Attribute of Tag OPTION 'value' & 'Display'
),array('empty'=>'')
),
),
array(
'class'=>'CButtonColumn',
'header'=>CHtml::link('Reset', array('')),
),
),
));
ปล.แอบทำใจเผื่อล่วงหน้า รู้สึกว่าที่นี่คนยังใช้ Yii น้อยใช่รึเปล่าครับ เห็นมีแต่หัวข้อบทความแต่ยังไม่มีเนื้อหาTag : PHP, Yii PHP Framework
Date :
2014-06-04 19:58:12
By :
Giguntic
View :
1368
Reply :
3
แล้วจะไป Like ทำใมหละครับคิดมากเกินไปแล้ว
กรณนี้เค้าเรียก เท่ากับนะ =
Date :
2014-06-04 21:20:39
By :
meannerss
พอดีมันเป็น Widget ของ cGridView ใน Yii หน่ะครับ ผมไม่ต้องใส่ SQL ใดๆเลย มันทำให้เองเสร็จหมด
ตัวอย่างตาม Link Demo และโค๊ดก็เหมือนในตย.เดโมเลย สั้นและง่ายมั๊กมาาาก จับแล้วติดใจ
แต่เพิ่งมาลองเลย Custom filter Search มันไม่เป็นครับ
http://www.yiiplayground.com/index.php?r=UiModule/dataview/gridView
Date :
2014-06-04 21:48:00
By :
Giguntic
ทำได้แระ http://www.yiiframework.com/doc/api/1.1/CDbCriteria#compare-detail
ไปแก้ใน Model > Method Search
Code (PHP)
compare(string $column, mixed $value, boolean $partialMatch=false, string $operator='AND', boolean $escape=true)
$partialMatch boolean whether the value should consider partial text match (using LIKE and NOT LIKE operators). Defaults to false, meaning exact comparison.
$escape boolean whether the value should be escaped if $partialMatch is true and the value contains characters % or _. When this parameter is true (default), the special characters % (matches 0 or more characters) and _ (matches a single character) will be escaped, and the value will be surrounded with a % character on both ends. When this parameter is false, the value will be directly used for matching without any change.
$partialMatch เปลี่ยนจาก True เป็น False ก็จะไม่ใช้ % แล้ว
Date :
2014-06-07 16:00:23
By :
Giguntic
Load balance : Server 04