【发布时间】:2013-02-21 12:24:14
【问题描述】:
我有一个模型用户:
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));
结果很奇怪:
为什么会这样?
【问题讨论】:
-
这很奇怪,如果您使用 UUID,您绝对应该做的一件事是将外键 (*_id) 的 mysql 数据类型更改为 CHAR(32)
-
我一直在使用 binary(36) 作为 uuid,它就像一个魅力
-
公平,我只是建议,因为显然 0000 不是 UUID
-
可以,但是数据类型没问题。储蓄搞砸了。甚至第一行中的记录也已损坏。它应该有“写”权限
-
可能不会导致您的问题,但在您的示例中,您的示例中有一个关键的“unigue”(使用 g 而不是 q) HABTM 定义
标签: cakephp save has-and-belongs-to-many