質問

私はいくつかの結合を持つ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';
.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top