varien_db_select joinから特定の基準を削除します
-
28-09-2020 - |
質問
私はいくつかの結合を持つVarien_Db_Select
オブジェクトを持っています、そして私はそれらのうちの1つに条件を変更する必要があります。どうやってこれを行うことができますか?
Update:「From」の部分で、次に「joincondition」の部分でその条件を見つけました。私はループスルーすることができますが、私はそれらを逆にすることはできません
解決
だからこれは私が思いついたものです:
$fromAndJoins = $select->getPart(Zend_Db_Select::FROM);
foreach($fromAndJoins as $key=>$joins){
if(strpos($joins['joinCondition'],$attribute->getAttributeCode().'_idx.attribute_id')!==false){
$newcondition = //change $joins['joinCondition'] as you want
$fromAndJoins[$key]['joinCondition']=$newcondition;
}
}
$select->reset(Zend_Db_Select::FROM);
$select->setPart(Zend_Db_Select::FROM,$fromAndJoins);
. 他のヒント
これは私が使う方法です。
このような条件( "部分)を得ることができます:
$where = $collection->getSelect()->getPart('where');
.
それからあなたはこのような条件をループすることができます:
foreach ($where as $key => $condition)
{
// Do what you need
}
.
最後に必要な変更を加えたら、あなたのコラルクリクションに更新された条件を適用することを忘れないでください:
$collection->getSelect()->setPart('where', $where);
. エラーを取得した場合
相関名 'xxx'を複数回
に定義することはできません。
unset($fromAndJoins[$key]);
項目を必要としている、そのキーが私の場合
$key = $attribute->getAttributeCode().'_idx.attribute_id';
. 所属していません magento.stackexchange