2013-02-21 3 views
1

У меня есть модель пользователя:CakePHP HABTM SaveAll создает неправильные Db записи

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

Непонятно, что вам обязательно нужно изменить тип данных mysql для ключей foriegn (* _id) в CHAR (32), если вы используете UUID – Dunhamzzz

+0

Я использовал двоичный код (36) для uuid для долгое время, он работает как шарм –

+0

честный, я просто предлагал, потому что явно 0000 не являются UUID – Dunhamzzz

ответ

0

Как выглядит ваша модель Sharepermisson?

Кажется, у Вас есть ошибка в вашем Контакт-HABTM отношения:

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

Вы пытались только сохранить контакт-часть без связи пользователя?

0

Я вижу, что слово уникальное с ошибкой, оно должно быть «уникальным», а не «unigue». Это может решить проблему.

Смежные вопросы