CakePHP - 无法获取HABTM数据以保存新记录

时间:2015-01-11 17:55:42

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

所以我有两个模型,Post和Event。两者都“彼此和贝隆共同”。

在Post.php模型文件中,我有:

public $hasAndBelongsToMany = array(
    "Events"=>array(
        "className"=>"Event",
        "joinTable"=>"events_posts",
        "foreignKey"=>"post_id",
        "associationForeignKey"=>"event_id",
        "unique"=>true
    )
);

在Event.php模型文件中,我有:

public $hasAndBelongsToMany = array(
        "Posts"=>array(
            "className"=>"Post",
            "joinTable"=>"events_posts",
            "foreignKey"=>"event_id",
            "associationForeignKey"=>"post_id",
            "unique"=>true
        )
    );

我的数据库有一个名为“events_posts”的表,其中包含两个字段:post_id,event_id。

现在,在一个不同的控制器中我需要手动保存信息(不是通过表单)我有这段代码:

$post_data = array(
        "Post"=>array(
            "image_id"=>$entry['id'],
            "image_url"=>$entry['images']['standard_resolution']['url'],
            "image_thumb"=>$entry['images']['low_resolution']['url'],
            "image_text"=>$entry['caption']['text'],
            "status"=>'1',
            "created_on"=>$entry['created_time'],
            "instagram_user_id"=>$user_id
        ),
        "Event"=>array(
            "Event"=>array($event['Event']['id'])
        )
    );
$result = $this->Post->save($post_data,array('deep' => true)); 

它正在保存新的帖子数据,但没有将关系保存到events_posts表中...有人可以告诉我我做错了什么吗?这让我非常疯狂。

1 个答案:

答案 0 :(得分:0)

使用singularize模型名称进行关联。按照Model and Database Conventions并在Post模型中添加以下代码。

class Post extends AppModel {

    public $hasAndBelongsToMany = array(
        "Event"
    );

}

然后,为了从控制器保存数据,您只需要保存($ post_data)。

$result = $this->Post->save($post_data);

使用CakePHP 2.6.0和CakePHP 2.3.4进行测试。