CakePHP关系模型:完全忽略模型

时间:2016-02-01 21:37:42

标签: php cakephp

我有一个非常简单的关系模型设置。使用$this->model->find('all',$params)时,结果不会返回完整的关系数据集。我把头发拉出来了。

这是我的表格设置:

表qs_skus:

id (AI, PK)
sku_name
profile
...

表net_lengths_in_skus:

id (AI,PK)
quick_ship_skus_id
net_lengths_id

表net_lengths

id (AI,PK)
name

模型的配置方式有:

  • 型号QuickShipSku $hasMany=array('NetLengthsInSku')
  • 模型NetLengthsInSku $hasOne='NetLength'
  • 所有型号都有$actAs = array('Containable')

执行以下操作时,我只查询第一个关系,最后一个关系被完全忽略:

$model = $this->QuickShipSku->find('all',
        array(
            'contain' => array(
                'NetLengthsInSku' => array('NetLength')
        )
    );

输出:

Array
(
    [0] => Array
        (
            [QuickShipSku] => Array
                (
                    [id] => 3
                    [sku_name] => 1112-8
                    [product_name] => Product A
                    [sku_specie_id] => 1
                    [members_ft] => 8
                    [profile] => Profile Description
                )

            [NetLengthsInSku] => Array
                (
                    [0] => Array
                        (
                            [id] => 10
                            [quick_ship_skus_id] => 3
                            [quick_ship_net_length_id] => 1
                        )
                )
        )
    )

对于每个NetLengthsInSku,应该有一个NetLength,但它甚至都没有被查询。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你在这里有多对多的关系。这意味着名为hasAndBelongsToMany的关联。

如果你使用Cake 2.x,你应该有这样的东西:

   --name-status
       Show only names and status of changed files. See the description of the
       --diff-filter option on what the status letters mean.

您也应该执行与NetLength模型类似的操作。