2011-11-10 7 views
0

私は以下の3つのモデルProduct,Order,OrderDetailを持っています。Find()コンテナを使用するディープアソシエーションの条件

Productには、以下の関連性を持っている:

public $hasMany = array('OrderDetail'); 

Orderには、以下の関連性を持っている:

public $hasMany = array('OrderDetail'); 

OrderDetailには、以下の団体があります。

public $belongsTo = array('Order'); 
public $belongsTo = array('Product'); 

私はContainable振る舞いを使用していますが、 wアリへfind()製品。

find()コールの条件部分でOrderモデルのフィールドを使用するにはどうすればよいですか?私Productモデルでは、このような

何か:

$this->find('all', array(' 
    conditions' => array(
     'Order.order_date' => '2011-09-12' 
    ) 
)); 

答えて

0

を試してみてください。ケーキのクエリを見れば、その理由がわかります。 Containableは、複数のクエリを実行してそれらをアセンブルします。

あなたが望むものを達成する最も簡単な方法は、フィルタリングしているモデルであるため、Orderモデルの観点からクエリを実行することです。これは、オプションを参照してくださいされていない場合:

See some ways to do it here

0

使用注文モデルと関連する条件を指定するには、インデックス「が含まれています」。 の動作がの製品モデルで動作していることを確認してください。

$this->find('all', array(
    'contain' => array(
    'Order' => array(
     'conditions' => array(
     'Order.order_date' => '2011-09-12' 
    ) 
    ) 
), 
)); 

さらに、モデルの関係を調べることができます。私はおそらくあなたが質問でそれらを間違って指定したと思う。

+0

これは動作しません、Order.order_dateが条件で使用することはできません。 – freshest

0

まず

public $belongsTo = array('Order', 'Product'); 

に$ belongsToの配列をマージし、あなたがこの方法をしたいものをacheiveすることはできません再び

関連する問題