2012-01-09 5 views
1

'sample_id'、 'order_id'、order_email_id '、' review_request '、' coupon_sent 'というフィールドを持つ' sample 'というテーブルがあります。MagentoデータベーステーブルをWHERE句で更新する

$to_date = date('Y-m-d H:i:s',strtotime('-1 days')); 
     $orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('status', 'complete')->addFieldToFilter('updated_at',array('to' => $to_date))->addAttributeToSelect('customer_email')->addAttributeToSelect('entity_id'); 
     foreach ($orders as $order) 
     { 
      $email = $order->getCustomerEmail(); 
      $id = $order->getEntityId(); 
      //echo 'Email: ' . $email . ' Id: ' .$id .'<br/>' ;  
      $sample = Mage::getModel('sample/sample'); 
      $sample->setOrderId($id); 
      $sample->setOrderEmailId($email); 
      $sample->save(); 
      echo '<br/>Record Added'; 

     } 

     $posts = Mage::getModel('sample/sample')->getCollection(); 
     foreach($posts as $sample_post) 
     { 
      if($sample_post->getReviewRequest()==0) 
      { 
        code to send email to email id's from this table's order_email_id field 
        try 
        { 
         (if($mail->send() == true) 
      { 
      echo "<br> Mail Sent "; 
         //**WHERE clause condition to update 'review_request' field for all successful emails sent** 

         } 
         else {echo 'Mail not Sent';} 
        } 
        catch(Exception e) {} 

は、だから私のコードにACCどのように私は、電子メールが正常に送信されたすべてのレコードに対してreview_request = 1に設定WHERE句を入れてください。事前に

おかげで

+0

Downvoted [フィルタリングコレクション]に何の研究を示していないために(http://www.magentocommerce.com/知識ベース/エントリ/ magento-for-dev-part-8-varien-data-collections)。 – clockworkgeek

+1

申し訳ありませんが、私はその記事に入り、いくつかの可能性を試してみましたが、成功しなかったことを正直に思います。それゆえ、確かに知っている人と二重チェックすることを考えました。あなたのリンクに基づいていくつかのオプションをもう一度試してみます。ありがとうございました。 – ivn

+0

ちょうど私の問題の解決策を考え出しました。そのリンクをもう一度持ってきて、解決策を見つけ出すために私を「探検」してくれた、私をdownvotingするための@clockworkgeekに感謝します。 :P私は8時間まで私のソリューションを投稿することはできませんが、できるだけ早くそれを行うでしょう。ありがとうございました – ivn

答えて

3

おかげで解決策を働かせて、私はさらに「精査」は再びリンクとdownvotingをもたらすため@clockworkgeek。 :P私はそれを見つけたと思う。

if($mail->send() == true) 
{ 
    echo "<br> Mail Sent "; 
$model1 = Mage::getModel('sample/sample')->getCollection(); 
      $model1->load()->addFieldToFilter('order_email_id',array('eq' => $toEmail))->getSelect()); 
foreach($model1 as $final_model) 
{ 
     $final_model->setReviewRequest(1)->save(); 
    } 
} 

そして、これは完全に電子メールがreview_request = 1つの おかげで送られたすべてのレコードと私のテーブルを更新します。

2

これは私のために動作しません:

$model1->load()->addFieldToFilter('order_email_id',array('eq' => $toEmail))->getSelect(); 

この作品ながら:

$model1->addFieldToFilter('order_email_id',array('eq' => $toEmail))->load();