0

私は次の3つのモデルを持っていProductますOrder、、OrderDetail

Product次の関連付けがあります。

public $hasMany = array('OrderDetail');

Order次の関連付けがあります。

public $hasMany = array('OrderDetail');

OrderDetail次の関連付けがあります。

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

私はこの動作を使用しており、製品を使用しContainableたいと考えています。find()

Orderfind()呼び出しの条件部分でモデルのフィールドを使用するにはどうすればよいですか?

Product私のモデルではこのようなもの:

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

3 に答える 3

0

最初に$belongsTo配列をにマージします

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

そしてさらに試みる

于 2011-11-11T06:06:49.087 に答える
0

含む」インデックスを使用して、注文モデルと関連する条件を指定します。製品モデルで包含可能な動作を使用していることを確認してください。

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

また、モデルの関係を確認することもできます。おそらく、質問でそれらを間違って指定したと思います。

于 2011-11-10T16:40:10.617 に答える
0

このままでは、あなたが望むものを達成することはできません。Cake が実行するクエリを見れば、その理由がわかります。Containable は複数のクエリを実行し、それらを組み立てます。

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

ここでそれを行ういくつかの方法を参照してください

于 2011-11-11T07:56:56.830 に答える