CakePHP - 无法获取 HABTM 数据以保存新记录
CakePHP - Can't get HABTM data to save with new record
所以我有两个模型,Post 和事件。两者 "haveAndBelongToMany" 彼此。
在 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" 的 table,其中包含两个字段: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));
它正在保存新的 post 数据,但没有将关系保存到 events_posts table...有人可以告诉我我做错了什么吗?这快把我逼疯了。
对关联使用单数模型名称。按照 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 进行测试。
所以我有两个模型,Post 和事件。两者 "haveAndBelongToMany" 彼此。
在 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" 的 table,其中包含两个字段: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));
它正在保存新的 post 数据,但没有将关系保存到 events_posts table...有人可以告诉我我做错了什么吗?这快把我逼疯了。
对关联使用单数模型名称。按照 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 进行测试。