cakePHP-无法在第二次递归中通过belongsTo拉取模型关联

cakePHP-无法在第二次递归中通过belongsTo拉取模型关联,cakephp,Cakephp,我试图找到一个“全部”。。。在cakePHP 1.3中有许多关联的模型上,该模型在模式的第二级递归中具有查询的过滤条件。简单地说,它看起来像这样,我想过滤用户ID: Delivery belongsTo Order, Order belongsTo User. 以下是ASSOC: 订单: var$belongsTo=数组 'User' => array( 'className' => 'User', 'foreignKey' => 'user_id

我试图找到一个“全部”。。。在cakePHP 1.3中有许多关联的模型上,该模型在模式的第二级递归中具有查询的过滤条件。简单地说,它看起来像这样,我想过滤用户ID:

Delivery belongsTo Order, Order belongsTo User.
以下是ASSOC:

订单: var$belongsTo=数组

  'User' => array(
      'className' => 'User',
      'foreignKey' => 'user_id',
      'conditions' => '',
      'fields' => '',
      'order' => ''
  ),....
   'Order' => array(
       'className' => 'Order',
       'foreignKey' => 'order_id',
       'conditions' => '',
       'fields' => '',
       'order' => ''
   ),...
交付: var$belongsTo=数组

  'User' => array(
      'className' => 'User',
      'foreignKey' => 'user_id',
      'conditions' => '',
      'fields' => '',
      'order' => ''
  ),....
   'Order' => array(
       'className' => 'Order',
       'foreignKey' => 'order_id',
       'conditions' => '',
       'fields' => '',
       'order' => ''
   ),...
由此产生的错误是:

SQL错误:1054:where子句[CORE/cake/libs/model/datasources/dbo_source.php,第684行]中的未知列“User.id”

这里是完整的查询,只是为了好玩:

选择Delivery.id、Delivery.order\u id、Delivery.Delivery\u address\u id、Delivery.Delivery\u date、Delivery.created、Delivery.modified、Delivery.Delivery\u run、Delivery.product\u mix\u id1、Delivery.product\u mix\u id2、Delivery.product\u mix\u id3、Delivery.product\u mix\u id4、Delivery.assembled、Delivery.Delivery.Delivery.ship.ship.shi,Delivery.product\u line\u id,Order.id,Order.user\u id,Order.product\u line\u id,Order.Order\u日期,Order.deliver\u周一,Order.deliver\u周二,Order.deliver\u周三,Order.deliver\u周四,Order.deliver\u周五,Order.deliver\u周六,Order.deliver\u地址\u id,Order.payment\u延迟,Order.active,Order.Order.cancle\u日期,Order.replaced\u id,Order.created、Order.modified、DeliveryAddress.id、DeliveryAddress.delivery\u company、DeliveryAddress.delivery\u title、DeliveryAddress.delivery\u first\u name、DeliveryAddress.delivery\u last\u name、DeliveryAddress.delivery\u street、DeliveryAddress.delivery\u house\u nr、DeliveryAddress.delivery\u邮政编码、DeliveryAddress.delivery\u town、,DeliveryAddress.delivery\u国家/地区,DeliveryAddress.created,DeliveryAddress.deleted,DeliveryAddress.modified,ProductLine.id,ProductLine.name,ProductLine.description,ProductMix1.id,ProductMix1.description,ProductMix1.image\u small\u路径,ProductMix1.image\u normal\u路径,ProductMix1.ProductMix1\u类别\u id,ProductMix1.Debricated,ProductMix1.created,ProductMix1.modified,ProductMix2.id,ProductMix2.name,ProductMix2.description,ProductMix2.image\u small\u path,ProductMix2.image\u normal\u path,ProductMix2.product\u categories\u id,ProductMix2.deprivated,ProductMix2.created,ProductMix2.modified,ProductMix2.id,ProductMix3.name,ProductMix3.description,ProductMix3.image\u small\u path,ProductMix3.image\u normal\u path,ProductMix3.product\u categories\u id,ProductMix3.deprivated,ProductMix3.created,ProductMix3.modified,ProductMix4.id,ProductMix4.name,ProductMix4.image\u small\u path,ProductMix4.image\u normal\u path,ProductMix4.product\u categories\u id,ProductMix4.deprivated,ProductMix4.0已创建,ProductMix4.id从交货修改为交货左加入订单为交货时订单。订单\u id=订单。id左加入交货\u地址为交货时交货地址。交货\u地址\u id=交货地址。id左加入产品\u行为交货时产品行。产品\u行\u id=产品行。id左加入产品\u混合为交货时产品Mix1Delivery.product\u mix\u id1=ProductMix1.id在交付时作为ProductMix2混合。product\u mix\u id2=ProductMix2.id在交付时作为ProductMix3混合。product\u mix\u id3=ProductMix3.id在交付时作为ProductMix4混合。product\u mix\u id4=ProductMix4.id其中User.id=1

有人知道为什么当连递归都设置为5时,cake不拉第二层,在本例中是用户模型吗

非常感谢。

编辑:我刚刚想到,在您的情况下,实际上您不需要二级加入,因为您可以按Order.user\u id而不是user.id进行筛选!你明白我的意思吗

所以,可能您不需要下面的解决方案

据我所知,蛋糕从来没有第二级加入自己,所以对于第二级和更深层的过滤条件,我使用

例如:

$options['joins'] = array(
    array(
        'table' => 'orders',
        'alias' => 'Order',
        'type' => 'LEFT',
        'conditions' => array(
            'Order.id = Delivery.order_id',
        )
    ),
    array(
        'table' => 'users',
        'alias' => 'User',
        'type' => 'LEFT',
        'conditions' => array(
            'User.id = Order.user_id',
            'User.some_field' => $someFilteringValue
        )
    )
);
$result = $this->Delivery->find('all', $options);

您是否尝试过删除模型缓存?