在null上调用成员函数pluck()

时间:2018-10-14 08:12:14

标签: laravel laravel-5 eloquent laravel-5.7

我有一个问题和错误:

这是错误:

以null调用成员函数pluck()

    protected function setCourseTime($episode)
{
    $course = $episode->course;
    $course->time = $this->getCourseTime($course->episodes->pluck('time'));
    $course->save();
}

protected function getCourseTime($times)
{
    $timestamp = Carbon::parse('00:00:00');
    foreach ($times as $t) {
        $time = strlen($t) == 5 ? strtotime('00:' . $t) : strtotime($t);
        $timestamp->addSecond($time);
    }
    return $timestamp->format('H:i:s');
}

}

感谢您的帮助

Laravel版本:5.7 php版本:7.0.2

2 个答案:

答案 0 :(得分:0)

确保您的关系与此定义相似:

public function episodes()
{
    return $this->hasMany(Episode::class);
}

如果您在此处错过了return$course->episodes将返回null,因此无法在空值上运行pluck

答案 1 :(得分:0)

首先请确保您已在课程模型上定义了“情节”关系。

请注意。 $course->episodes将作为“集合”从数据库中获取情节。

但是,如果您只需要time个情节,请直接从数据库中进行过滤。

您应该做的是$course->episodes() 注意方括号
这将称为“情节”关系。那么您可以致电pluck()

$course->episodes()->pluck('time')