ErrorException (E_ERROR): Попытка получить свойство необъекта. когда я пытаюсь внедрить массив в строку в index.blade.php - PullRequest
1 голос
/ 10 июня 2019

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);
   }
}

Модель 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 ]

1 голос
/ 10 июня 2019

Вы устанавливаете 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
0 голосов
/ 10 июня 2019

Вы зацикливаете неправильные переменные / коллекции. Вам нужно внести некоторые изменения, чтобы это работало. Ниже код должен решить вашу проблему.

@php
$p = [];
foreach($series as $ser){
    foreach($ser->genres as $genre){
        $p[] = $genre->genres;
    }
}
$gen = implode(",", $p);
@endphp
<span>{{$gen}}</span>
0 голосов
/ 10 июня 2019

Вы получаете доступ к массиву с помощью -> , тогда как стрелкой доступен только объект. Для доступа к ключам массива вы должны использовать $ array ['key'] подхода.

Массивы и объекты - это два разных типа данных, поэтому для доступа к их внутренним данным вы должны использовать их соответствующие подходы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...