Cakephp HABTM saveAll会创建错误的db记录

时间:2013-02-21 12:24:15

标签: cakephp save has-and-belongs-to-many

我有一个模型用户:

public $hasMany = array(
    'Contact' => array('dependent' => true));
public $hasAndBelongsToMany = array(
    'MySharepermission' => array(
        'unigue' => false,
        'className' => 'Contact',
        'joinTable' => 'sharepermissions_users',
        ));

和模特联系

public $belongsTo = array('User');    
public $hasAndBelongsToMany = array(
    'Sharepermission' => array(
        'unigue' => false,
        'className' => 'User',
        'joinTable' => 'sharepermissions_users',
        )
    );

现在我有一个$ data数组:

array(
(int) 0 => array(
    'Contact' => array(
        'id' => '51254509-0654-468b-8007-1683550d8ff8'
    ),
    'Sharepermission' => array(
        'id' => '5123a3c3-d5ac-4541-b28b-326c550d8ff8',
        'permission' => 'read'
    )
),
(int) 1 => array(
    'Contact' => array(
        'id' => '51254509-0654-468b-8007-1683550d8ff8'
    ),
    'Sharepermission' => array(
        'id' => '51252eba-8804-40e7-bf3d-7db9550d8ff8',
        'permission' => 'write'
    )
)
)

数据库目前是空的,现在我做了:

debug($this->Contact->saveAll($data));

结果很奇怪: enter image description here

为什么会这样?

2 个答案:

答案 0 :(得分:0)

您的Sharepermisson模型如何?

您的Contact-habtm关系似乎有错误:

public $hasAndBelongsToMany = array(
    'MySharepermission' => array(
        'unigue' => false,
        'className' => 'Contact',
        'joinTable' => 'sharepermissions_cantacts',
        ));

您是否尝试仅保存没有用户关系的联系人部分?

答案 1 :(得分:0)

我看到单词unique是拼写错误的,它应该是“唯一的”而不是“唯一的”。它可能会解决这个问题。