首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Containable使用深度关联的Find()条件

使用Containable使用深度关联的Find()条件
EN

Stack Overflow用户
提问于 2011-11-10 23:14:54
回答 3查看 101关注 0票数 0

我有以下三种型号:ProductOrderOrderDetail

Product具有以下关联:

代码语言:javascript
复制
public $hasMany = array('OrderDetail');

Order具有以下关联:

代码语言:javascript
复制
public $hasMany = array('OrderDetail');

OrderDetail具有以下关联:

代码语言:javascript
复制
public $belongsTo = array('Order');
public $belongsTo = array('Product');

我正在使用Containable行为,并且想要find()产品。

如何在Order ()调用的conditions部分中使用find模型中的字段?

在我的Product模型中类似这样:

代码语言:javascript
复制
$this->find('all', array('
    conditions' => array(
        'Order.order_date' => '2011-09-12'
    )
));
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-11 15:56:57

你不能用这种方式得到你想要的东西。如果你看一下Cake you的查询,你就会明白为什么。Containable执行多个查询,然后组装它们。

获取所需内容的最简单方法是从订单模型的角度执行查询,因为它是您正在过滤的模型。如果这不是一个选项,请参阅:

See some ways to do it here

票数 0
EN

Stack Overflow用户

发布于 2011-11-11 00:40:11

使用'contain‘索引指定Order模型和相关条件。确保您在产品模型上使用containable行为。

代码语言:javascript
复制
$this->find('all', array(
  'contain' => array(
    'Order' => array(
      'conditions' => array(
        'Order.order_date' => '2011-09-12'
      )
    )
  ),
));

另外,你可能想看看你的模型关系。我认为你可能在问题中错误地指定了它们。

票数 0
EN

Stack Overflow用户

发布于 2011-11-11 14:06:49

首先将$belongsTo数组合并到

代码语言:javascript
复制
public $belongsTo = array('Order', 'Product');

然后重试

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8081751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档