2011-07-29 9 views
0

find()は、条件に一致する行があるにもかかわらず、NULLを返しています。find()NULLを返すYii

検索スニペット

  $tempApp = Applicant::model()->find(array('condition'=>'phn=' . $app->phn . ' AND id<>' . $app->id)); 

      if($tempApp != NULL) { 
       $archId = $this->archive($tempApp); 
       if($archId != NULL) { 
        $tempApp->phn = NULL; 
        $tempApp->save(); 
        $app->note = 'Former name: ' . $tempApp->first_name . ' ' . $tempApp->middle_name . ' ' . $tempApp->last_name; 
       } else { 
        unset($archId); 
       } 
      } 

注:このコードは、申請者が更新された第二の時間を動作します。なぜこれが起こっているのか分かりません。なぜこのようなことが起こっているのか、誰かに助言を与えることはできますか?

注:私はfind('phn=:phn AND id<>:id', array(':phn'=>$app->phn, ':id'=>$app->id));

おかげ

答えて

0

てみてくださいあなたのSQL文のうち、エコーとのphpMyAdminのSQLタブでそれを貼り付け、すなわち(find()を使用できるさまざまな方法を試してみましたが、あなたは結果を得るかどうかを確認します。また。

、私はを使用しようとするだろう!空()の代わりにNULLのを私のif文のため

1

NULLの代わりにcount()を使用する

if(count($tempApp)) { 
       $archId = $this->archive($tempApp); 
       if(count($archId)) { 
        $tempApp->phn = NULL; 
        $tempApp->save(); 
        $app->note = 'Former name: ' . $tempApp->first_name . ' ' . $tempApp->middle_name . ' ' . $tempApp->last_name; 
       } else { 
        unset($archId); 
       } 
      } 
関連する問題