ErrorException(E_ERROR):试图获取非对象的属性。当我尝试将数组分解为index.blade.php

时间:2019-06-10 09:28:23

标签: laravel

index.blade.php

@php
    $p = [];
    foreach($p->genres as $genre){
        $genres[] = $genre->genres;
    }
    $genre = implode(",", $genres);

@endphp
<span>{{$genre}}</span>

控制器

 public function index()
    {
        $series = Series::all();

        return view('admin/series/index',['series' => $series]);


    }

Genres.php模型

class Genres extends Model
{       
    protected $primarykey=  'id';
    protected $fillable = ['genres'];

    public function series()
     {
    return $this->belongsToMany(Series::class);
   }
}

Model Series.php

class Series extends Model
{

    protected $table = 'series';
    protected $primarykey='id';
    protected $fillable = ['title','country','japanese','year','synonyms','trailer','image','network','rating','duration','genres','aired','directors','screenwriters','score','type','episode','synopsis'];

    public function genres(){
    return  $this->belongsToMany(Genres::class);
    }
}

我想使用多个表关系显示来自不同数据库的数据,但是数据仍然是一个编译数组以显示它。 和编译我问了一个朋友。有人告诉我使用类似index.blade.php中的代码。然后返回

  

ErrorException(E_ERROR)尝试获取不是对象的属性

3 个答案:

答案 0 :(得分:1)

您正在通过控制器设置series,因此必须先在视图内循环浏览系列。

@foreach($series as $s){

    // then your code should be take place.

    @php
        $genres = [];
        foreach($s->genres as $genre){
            $genres[] = $genre->genres;
        }
        $genre = implode(",", $genres);

    @endphp
    <span>{{$genre}}</span>

@endforeach

答案 1 :(得分:0)

您正在使用-> 访问数组,而只能使用箭头访问该对象。要访问数组键,您必须使用 $ array ['key'] 方法。

数组和对象是两种不同的数据类型,因此要访问其内部数据,必须使用它们各自的方法。

答案 2 :(得分:0)

您正在循环错误的变量/集合。您需要进行一些更改才能使其正常运行。下面的代码应该可以解决您的问题。

@php
$p = [];
foreach($series as $ser){
    foreach($ser->genres as $genre){
        $p[] = $genre->genres;
    }
}
$gen = implode(",", $p);
@endphp
<span>{{$gen}}</span>