2016-08-29 2 views
1

私はコードを書いていますが、空であれば見つけたかどうかを知りたいと思います。ここでは、コードの私の作品は、次のとおりです。Phalcon PhP - モデルのEOFはありますか:: find

public function signatureAction() 
{ 
    $info = $this->session->get('current_quote'); 
    $object_list = ApplicationSignatureFile::find(array('conditions' => 'application_id = ?1 AND quote_id = ?2', 
     'bind' => [ 
      1 => $info['application_id'], 
      2 => $info['quote_id'], 
     ])); 

    $this->view->setVar('object_list', $object_list); 
    if ($object_list) { 
     $this->view->setVar('has_files',true); 
    } else { 
     $this->view->setVar('has_files',false); 
    } 
} 

チェックする方法ならば、私は$object_listがEOFの場合ので、私はより良いhas_files変数を設定することができ、まだ知らない何か。現在は動作していません。コントローラーや.voltビューではどうすればいいですか?

答えて

1

これは実際には非常に奇妙です。 findFirstまたは他のORMメソッドを使用すると、失敗した場合はfalseが返されますが、findを使用した場合は戻りません。

あなたのケースでは、単純な回避策は、結果セットにcount方法を使用することです:

$test = \Models\Objects::find([ 
    'conditions' => 'is_active = 42' 
]); 
if ($test->count()) { 
    print('I have records with is_active = 42'); 
    d($test->toArray()); 
} else { 
    print('I do not have any records with is_active = 42'); 
} 
+0

私は、これはphalconとPHP 7とバグができると思うもそれを持っていたが、時間がありませんでした何が原因であるかを確認する。 – Juri

+0

@JuriはPhalcon 2とPHP 5.6で自宅でテストされています。 –

+1

@Juri、私はこれがバグだとは思っていませんが、むしろ意図した動作です。 'find'は空の' ResultsetInterface'(_loopable_オブジェクト)を返します。これは横断されることを意味します。例えば; '$ findResultset-> getFirst()'を実行すると仮定した 'false'という値が得られます。 – Timothy

関連する問題