2016-10-03 3 views
0

私の要求があるすべてのフィールドを検索するSQL:CakePHPは

$monits = $this->Monit->find('all', array('recursive'=>'0')); 

結果は次のとおりです。

array(
    (int) 0 => array(
     'Monit' => array(
      'id' => '1', 
      'nom' => 'mon' 
      'ecole_id' => '1' 
     ), 
     'Ecole' => array(
      'id' => '1', 
      'nom' => 'ecole name' 
     ), 
     'Seance' => array(
      (int) 0 => array(
       'id' => '2', 
       'title' => 'ele name', 
       'monit_id' => '1' 
      ), 
      (int) 1 => array(
       'id' => '3', 
       'title' => 'ele name', 
       'monit_id' => '1' 
      ) 
     ) 
    ) 
) 

私は 'MONITとエコール' を選択し、 '交霊会' を排除したいと思います。どうしたらいいですか?

答えて

0

CakePHP's Containable Behaviorを使用してください。

あなたのAppModelにpublic $recursive = -1;を設定することをお勧めします。これはすべてのモデルで再帰レベルを-1にデフォルト設定します。再帰的な使用は基本的にContainableの導入以来悪い習慣とみなされるため、実行するとよいでしょう。

"recursive"は斬新なアイデアで、ブログのような単純なアプリケーションを実行するとメリットがありますが、放棄されているだけでなく、Cake 3からも削除されました。コンテナの動作はです。あなたが実際に必要とする以上に多くのデータを取得する理由はなく、再帰的に正確にそれを行います。一方、Containableでは、関連するデータを正確に指定することができます。

+0

私は試してみます: $ monits = $ this-> Monit-> recursive = -1; $ monits = $ this-> Monit-> find( 'all'、array( 'contains' => 'Ecole.nom')); とその結果は です。$ monits = $ this-> Monit-> recursive = -1; –