保存功能在Eloquent中无效,

时间:2018-03-05 20:51:02

标签: laravel laravel-5 laravel-5.2

我喜欢帖子时执行的代码

   // auth()->id() is the id of the user that liked the post
   $post->post_likes()->associate(auth()->id());
   $post->save();

代码运行后发生错误

方法Illuminate \ Database \ Query \ Builder :: associate不存在。

-

发布模型

class Post extends Model
{

    public function post_likes()
    {            
        return $this->hasMany(PostLike::Class);
    }

}

更新

我喜欢这样做。

$post_like =  PostLike::create([
     'post_id' => $post->id,
     'user_id' => auth()->id()
]);

$post->post_likes()->save($post_like);            

现在我无法删除之类的内容。当我不喜欢帖子时,下面的代码会被执行。发生的错误是:

方法Illuminate \ Database \ Eloquent \ Collection :: dissociate不存在。

$post->post_likes->dissociate();

$post->save();

2 个答案:

答案 0 :(得分:0)

docs attachdetach函数适用于多对多关系。将{{1>}用于一对多关系

答案 1 :(得分:0)

oneToMany你应该使用员工和分离。

ManyToMany你应该使用附加和分离。

所以您只需要将关联更改为附加即可。

在您使用两者后,您需要保存

查看文档OneToMany& ManyToMany