2017-02-27 15 views
1

データがDBに存在し、ActiveRecordモデルにロードされているかどうかをチェックする方法。たとえば、Kohanaでは、ORMがレコードを正常にロードしたことを確認する関数loadedがあります。Yii2 ActiveRecordが正常にレコードをロードしたかどうかをチェック

class Model_Image extends ORM { 
    public function url($width = NULL) 
    { 
     if(! $this->loaded()){ 
      return NULL; 
     } 
     ... 
    } 

ActiveRecordから拡張されたImageという名前のクラスがあります。クラスの画像に関数urlがあります。関数のurlデータがロードされたかどうかを確認する必要があります。

ActiveRecordがレコードを正常にロードしたかどうかを確認するためにYii2に類似したものがありますか?

答えて

1

条件が満たされていないActiveRecordモデルでfindOne()(単純にone())を使用すると、nullが返されます。

条件が満たされていないActiveRecordモデルでfindAll()(単純にall())を使用すると空の配列が返されます。

ActiveRecordが空でないかどうかを確認する必要があります。

例:

$model = MyActiveRecordModel::findOne(1); 
if (empty($model)) { 
    // DB row not found 
} else { 
    // DB row found 
} 

またあなたがboolean型プロパティにモデルのisNewRecordを確認することができます。データの存在のために

if ($model->isNewRecord) { 
    // no previously db data loaded - 
    // new instance of model (new data not saved yet) 
} 
+0

ActiveRecordのがあるかどうかを確認する方法ActiveRecordモデル内で空ではない、例えば、私はARモデルの関数URLの中に入っているurlを生成するポーズ。 –

+0

どういう意味ですか?これは最初のものとはまったく異なる質問です。 – Bizley

+0

空が追加されたかどうかをチェックする例。 – Bizley

0

これは一つの項目である場合は、次の配列が要素を持っていないならば、foreachのサイクルの実行体を `tのだろうように、複数のモデルが、その後

$model = User::findAll(1); 

常に、配列を返す場合

$model = User::findOne(1); 
if($model){ 
//all good 
}else{ 
//no data 
} 

0

チェック:

<?php $checkForExistenceOfData = Model::find()->exists(); 
    if($checkForExistenceOfData == true){ 
     $getModelData = Model::findAll(); 
    }else{ 
     echo 'No Data Exists'; 
    } 
?> 
関連する問題