【问题标题】:CakePHP HABTM questionCakePHP HABTM 问题
【发布时间】:2009-07-23 07:17:29
【问题描述】:

可能是一个新手问题,因为我想在空闲时间看看所有这些“PHP 框架”是什么。

对于初学者,我想为多张照片添加多个标签。我有一个标签模型和 mot 模型(照片)。 mot模型截图:

var $hasAndBelongsToMany = array(
                                    'Tag' =>
                                    array(
                                        'className'              => 'Tag',
                                        'joinTable'              => 'mots_tags',
                                        'foreignKey'             => 'mot_id',
                                        'associationForeignKey'  => 'tag_id',
                                        'unique'                 => false
                                    )
                                );

在 add() 的标签控制器中,我有:

$this->Tag->save($this->data);

当 print_r'ing $this->data 我看到:

Array

( [Mot] => 数组 ( [id] => 2 )

[Tag] => Array
    (
        [title] => 21e21e
    )

)

标签被插入到标签表中,但是没有任何东西被插入到 mottags(在 mot 和 tag 之间有下划线,但是当我在这里写它而不是变成下划线时它是斜体)表。我的 mots_tags 数据库架构:(sqlite)

create table mots_tags (id INTEGER PRIMARY KEY, mot_id INTEGER, tag_id INTEGER)

Cake 只写入 Tags 表而不写入 associacions 表的任何线索?我没有收到任何 SQL 错误。有没有办法查看它是否尝试写入关联表?

【问题讨论】:

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


    【解决方案1】:

    试试

    $this->Tag->saveAll($this->data);
    

    编辑:

    嗯,你肯定需要saveAll()。此外,连接的 HABTM 模型的数组需要采用某种稍微奇怪的格式。如果我没记错的话应该是这样的:

    array(
       'Tag' => array('title' => ...),         // primary model
       'Mot' => array(                         // connected HABTM model
          'Mot' => array($id, $id, $id, ...)
       )
    );
    

    【讨论】:

    • 相同 - mots_tags 没有任何内容。没有错误,标签到达标签表。
    【解决方案2】:

    自己找到了解决方案。

    因为Mot可以有很多标签,而Tags可以有很多Mots,而Tags的添加是由标签控制器而不是mots控制器来处理的,所以标签模型也必须包含$hasAndBelongsToMany。与 mot 模型相同,只是将 Tag(s) 替换为 Mot(s):

    这也应该在标签模型中,而不仅仅是在 mot 模型中:

    var $hasAndBelongsToMany = array(
        'Mot' =>
        array(
            'className'              => 'Mot',
            'joinTable'              => 'mots_tags',
            'foreignKey'             => 'tag_id',
            'associationForeignKey'  => 'mot_id',
            'unique'                 => false
        )
    );
    

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多