首页 文章

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

提问于
浏览
0

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

这是我的表格设置:

Table qs_skus:

id (AI, PK)
sku_name
profile
...

Table net_lengths_in_skus:

id (AI,PK)
quick_ship_skus_id
net_lengths_id

Table 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

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

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

    class QsSku extends AppModel {
        public $hasAndBelongsToMany = array(
          'NetLength' =>
            array(
                'className' => 'NetLength',
                'joinTable' => 'net_lengths_in_skus',
                'foreignKey' => 'quick_ship_skus_id',
                'associationForeignKey' => 'net_lengths_id',
            )
        );
    }
    

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

相关问题