1

つまり、php activerecordを使用してレコードをプルするときは、先に進む前に、そのレコードが存在することを確認したいと思います。それぞれの状況は異なっているように見え、実際にそれらのいずれかが正しく機能しているかどうかはわかりませんので、これを行うためのより簡単な方法が必要です。

例えば:

$ var = Model :: find_by_pk( "something");

if(!empty($ var)){...//レコードが存在します}

それはすべての例外をキャッチしますか、それともレコードが1つのレコードプルに対して行をまったく返さない場合ですか?

それから私はこれを試しました:

if(count($ var-> errors)== 0){...//レコードが存在します}

これは結果セットでは機能するようですが、単一のレコードプルでは機能しません。存在しないオブジェクトを参照しようとすると例外が発生します。

Model :: examples()が表示されますが、それは、すべてのactiverecord呼び出しに戻って変更する必要があることを意味しますか?(http://www.phpactiverecord.org/docs/ActiveRecord/Model#methodexists)?

要約すると、php.activerecordの結果にデータが含まれていることを確認する簡単な方法(できればユニバーサルおよび/または防弾)は何ですか?

4

1 に答える 1

4

するのに十分なはずです

$var = Model::find_by_pk("something");
if($var){
    //winning
}else{
    //not found
}

できない理由はif (count($var->errors) == 0)、ヒットし$varないとオブジェクトではないのでチェックできないerrorsからです。

find例外が存在しない場合は、結果がないだけでなく、例外が発生することに注意してください。

 try{
     $var = Model::find($id);
 }catch (\Exception $e){
      //not found
 }
于 2013-01-31T09:54:59.077 に答える