【问题标题】:Cakephp HABTM saveAll creates wrong db recordsCakephp HABTM saveAll 创建错误的数据库记录
【发布时间】: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


【解决方案1】:

您的 Sharepermisson 模型是什么样的?

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

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

您是否尝试过只保存联系人部分而不保存用户关系?

【讨论】:

    【解决方案2】:

    我看到unique这个词拼错了,应该是“unique”而不是“unigue”。或许能破案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多