【发布时间】:2014-08-24 04:53:45
【问题描述】:
我有 3 张桌子:posts、tags、post_tag。
每个Post 都有很多标签,所以我对它们使用hasMany 方法。但是当我在下拉列表中选择例如 3 个标签时,我无法将它们添加到 post_tag,因此我无法选择并显示每个帖子的标签。
我的Post 模特:
class Post extends Eloquent{
public function tag()
{
return $this->hasMany('Tag');
}
}
我的Tag 模特:
class Tag extends Eloquent{
public function post()
{
return $this->belongsToMany('Post');
}
}
还有我的postController:
class postController extends BaseController{
public function addPost(){
$post=new Post;
$post_title=Input::get('post_title');
$post_content=Input::get('post_content');
$tag_id=Input::get('tag');
$post->tag()->sync($tag_id);
$post->save();
我希望将这个 post_id 保存到带有标签 ID 的 post_tag 表中,
但它不起作用。感谢您的宝贵时间。
【问题讨论】:
-
如果一个关系有一个数据透视表,那么它的两边都应该是
belongsToMany。此外,您应该真正将方法命名为tags而不是tag,因为它是 *Many 关系。 -
@alexrussell 是的,你是对的 :)。其他问题是
$post->tag()->sync($tag_id); $post->save();这些句子的地方应该被替换。谢谢 -
我添加了一个答案,进一步解释了我的评论并包含您自己的更正。
标签: php laravel eloquent pivot-table