2013-02-21 60 views
1

我有一个型号的用户:CakePHP的HABTM白水产生错误的数据库记录

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', 
     ) 
    ); 

现在我有$数据数组:

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

为什么会这样呢?

+0

这很奇怪,你应该做的一件事就是改变foriegn键(* _id)的mysql数据类型为CHAR(32)如果你使用UUID – Dunhamzzz 2013-02-21 15:00:18

+0

我一直使用二进制(36)作为uuid for很长一段时间,它像一个魅力 – 2013-02-21 15:06:24

+0

公平,我只是暗示,因为0000s不是UUID – Dunhamzzz 2013-02-21 15:11:59

回答

0

Sharepermisson模型的外观如何?

看来你在你接触的habtm关系有一个错误:

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

您是否尝试过只保存接触的部分,而用户的关系?

0

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