Php Laravel 5.5-“;在null上调用成员函数sync();错误

Php Laravel 5.5-“;在null上调用成员函数sync();错误,php,laravel-5,laravel-5.5,Php,Laravel 5,Laravel 5.5,我正在尝试保存帖子图片。将图像或移动图像保存到uploads目录没有问题。但是在sync部分,它给出了那个错误 (我有三个表。POST、媒体和透视表) 这里是同步代码 $media = Media::where('created_at', '>=', Carbon::now()->subSecond(10))->pluck('id'); $post->media()->sync($media, true); 媒体模式 public function posts(

我正在尝试保存帖子图片。将图像或移动图像保存到uploads目录没有问题。但是在
sync
部分,它给出了那个错误

(我有三个表。POST、媒体和透视表)

这里是同步代码

$media = Media::where('created_at', '>=', Carbon::now()->subSecond(10))->pluck('id');

$post->media()->sync($media, true);
媒体模式

public function posts(){

    $this->belongsToMany('App\Post','media_post','image_id','post_id');
}
和后模型

public function media() {

    $this->belongsToMany('App\Media','media_post','post_id','image_id');
}

有什么建议吗

您没有从关系方法返回。这就是为什么

public function media()
{
    $this->belongsToMany(...);
}
这就是您正在做的,它没有返回值

$n = null;
$n->sync(); // Call to a member function sync() on null

function a() { }
a()->sync(); // Call to a member function sync() on null

这是PHP。您定义了一个不返回任何内容的方法,如果您调用它,则会得到一个
null

因为代码不多。诊断起来有点困难。但是,错误表明media()的结果为空。我从那里开始。可能是var_转储了它。我用dd方法检查过,它不是空的。不幸的是,我不知道我需要添加什么问题。一切似乎都很正常。你是对的,我应该补充更多的信息,但我不知道我需要附加什么代码的问题。。(现在也编辑了问题,并添加了帖子和媒体模型)你有了答案,这就完成了,问题结束了。。。。没有更多的讨论。。。阅读我的答案,它解释了为什么会得到“null”:)是的,可能是,因为其他部分没有错误。不是“可能是”,是它