Php Laravel 8:试图获得财产';费率';非对象

Php Laravel 8:试图获得财产';费率';非对象,php,laravel,laravel-8,Php,Laravel,Laravel 8,我正在与Laravel 8合作开发我的项目,在这个电影存储项目中,moviestable和imdbstable之间有一对一的关系 因此,我已经将这些关系添加到如下模型中: Movie.php: public function imdb() { return $this->hasOne(Imdb::class); } protected $fillable = ['rate','movie_id']; public function movie()

我正在与Laravel 8合作开发我的项目,在这个电影存储项目中,
movies
table和
imdbs
table之间有一对一的关系

因此,我已经将这些关系添加到如下模型中:

Movie.php

public function imdb()
    {
        return $this->hasOne(Imdb::class);
    }
protected $fillable = ['rate','movie_id'];
public function movie()
    {
        return $this->belongsTo(Movie::class);
    }
Imdb.php

public function imdb()
    {
        return $this->hasOne(Imdb::class);
    }
protected $fillable = ['rate','movie_id'];
public function movie()
    {
        return $this->belongsTo(Movie::class);
    }
imdbs
表的迁移如下:

public function up()
    {
        Schema::create('imdbs', function (Blueprint $table) {
            $table->id();
            $table->string('rate');
            $table->integer('movie_id')->unsigned();
            $table->timestamps();
        });
    }
如您所见,我已经设置了
movie\u id
,它定义了
movies
表的
id

现在,为了检索刀片服务器上的数据,我做了以下操作:

@foreach($movies  as $movie)
<tr>
   <th scope="row">{{ $movie->id }}</th>
   <td>{{ $movie->name }}</td>
   <td>{{ $movie->year }}</td>
   <td>{{ $movie->imdb->rate }}</td>
</tr>
@endforeach
但问题是,我收到了以下错误消息:

ErrorException尝试获取非对象的属性“速率”

但是,
费率
中已经有一些数据:


我不知道如何解决这个问题,因为一切看起来都很正常。

您的电影可能没有与电影id关联的imdb对象

要修复此问题,请检查视图以确定其是否存在:

例如,更改:

<td>{{ $movie->imdb->rate }}</td>
{{$movie->imdb->rate}

@if($movie->imdb!==null)
{{$movie->imdb->rate}
@否则
不适用
@恩迪夫

您的电影可能没有与电影id关联的imdb对象

要修复此问题,请检查视图以确定其是否存在:

例如,更改:

<td>{{ $movie->imdb->rate }}</td>
{{$movie->imdb->rate}

@if($movie->imdb!==null)
{{$movie->imdb->rate}
@否则
不适用
@恩迪夫

您的某些电影可能没有imdb对象?在这种情况下,您需要检查电影是否有imdb或notas示例
可选($movie->imdb)->rate“尚未评级”
只是澄清一下,问题不在于是否有数据。问题是,
$movie->imdb
不是对象(当一部电影没有相关的imdb记录时会发生这种情况)。@El_Vanja如何修复此问题您可以通过添加检查来修复它,查看电影是否有相关的对象。请看我的答案:)您的一些电影可能没有imdb对象?在这种情况下,您需要检查电影是否有imdb或notas示例
可选($movie->imdb)->rate“尚未评级”
只是澄清一下,问题不在于是否有数据。问题是,
$movie->imdb
不是对象(当一部电影没有相关的imdb记录时会发生这种情况)。@El_Vanja如何修复此问题您可以通过添加检查来修复它,查看电影是否有相关的对象。见我的答案:)