Php Laravel 8:试图获得财产';费率';非对象
我正在与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()
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如何修复此问题您可以通过添加检查来修复它,查看电影是否有相关的对象。见我的答案:)