Bagaimana cara membuat multi-kondisi di addAttributeToFilter?
Saya ingin menghasilkan query SQL seperti ini (gambar terlampir):
WHERE ((`e`.`news_from_date` > '2013-09-12') OR (`e`.`news_to_date` < '2013-09-12'))
AND ((((`e`.`special_price` IS NULL))) OR (((`e`.`special_price` IS NOT NULL)) AND ((`e`.`special_from_date` < '2013-09-12') OR (`e`.`special_to_date` > '2013-09-12'))))
$collection->addAttributeToFilter('special_price', array('null'=>'special_price'), 'left');
Terima kasih
Jawaban:
Anda harus dapat menggabungkan sebagian besar teknik ini untuk membuat kueri yang Anda inginkan. Untuk tabel penjualan, Anda mungkin akan menggunakan
addFieldToFilter
- tetapiZend_Db_Expr
kemungkinan jalur resistensi paling rendah untuk Anda:addAttributeToFilter:
Menurut Wiki Magento : Saat membuat tanda kurung yang memiliki
OR
kondisi Anda dapat melakukan hal berikut:Jadi, dari situ kita dapat membuat yang berikut:
Ini akan menghasilkan
WHERE
klausa format:addFieldToFilter:
Dalam kasus di mana model terhubung langsung ke tabel DB, berikut ini diperlukan untuk menerapkan persyaratan ke kolom database dengan nama:
Zend_Db_Expr:
Untuk konstruksi yang jauh lebih rumit, Anda dapat membuat klausa sendiri di mana menggunakan
Zend_Db_Expr
. Contohnya :Sumber:
/programming/5301231/addattributetofilter-and-or-condition-in-magentos-collection
/programming/3826474/magento-addfieldtofilter-two-fields-match-as-or-not-and/7851884#7851884
sumber
Zend_Db_Expr
:$collection->getSelect()->where(new Zend_Db_Expr("(CONDITION_1 OR (CONDITION_2 AND (CONDITION_3 OR CONDITION_4)))"));
name
,altnernate_name
,description
) dan ingin tahu kapan hasilnya adalah karenadescription
atribut.Jika Anda ingin memasukkan DAN dengan kombinasi OR maka
sumber
Atau syarat menggunakan addFieldToFilter
sumber