Уровень 7 отображает данные о взаимосвязи в блейд-сервере, используя один ко многим - PullRequest
0 голосов
/ 16 июня 2020

что не так, почему в клинке не хотят показывать имя УРОВНЯ

контроллер:

 $streams=Stream::with('level')->get();
 return view('streams.index',compact('streams'));

Stream Модель:

 public function level()
    {
        return $this->belongsTo('App\Models\Level', 'level_id');
    }

Модель уровня:

public function stream()
    {
        return $this->hasMany('App\Models\Stream', 'level_id');
    }

Индекс лезвия:

@foreach($streams as $stream)
                    <tr>
                        <th scope="row">#</th>
                        <td>{{$stream->name}}</td>
                        <td>{{$stream->code}}</td>
                        <td>
                        {{$stream->level->name}}
                        </td>
                        <td>
                      <tr/>
@endforeach

Также пробовал:

@foreach($streams as $stream)
                    <tr>
                        <th scope="row">#</th>
                        <td>{{$stream->name}}</td>
                        <td>{{$stream->code}}</td>
                        @foreach($stream as $level)
                        <td>
                        {{$level->name}}
                        </td>
                        @endforeach
                        <td>
                      <tr/>
                   @endforeach

Ошибка: Попытка получить «имя» свойства не-объекта (вид: C: \ xampp \ htdocs \ project \ sms \ resources \ views \ streams \ index.blade. php)

Результат DD:

 [{"id":3,"name":"Class A","code":"GRC0001A","uuid":"X9HG9zc7ceTlhdfF1fN1wAer1cHP1MhfuM7GHBSqNogYSo3bsGmpTl06iJQyyKp3QMrkHe1VyiTxeKFa49wC7W5BY3E3kFZkpF1D","level_id":1,"created_at":"2020-06-14T10:58:28.000000Z","updated_at":"2020-06-14T11:39:54.000000Z","level":{"id":1,"name":"YEAR 7","code":"CODE1","uuid":"X9HG9zc7ceTlhdfF1fN1wAer1cHP1MhfuM7GHBSqNogYSo3bsGmpTl06iJQyyKp3QMrkHe1VyiTxeKFa49wC7W5BY3E3kFZkpF1D","created_at":"-000001-11-30T00:00:00.000000Z","updated_at":"-000001-11-30T00:00:00.000000Z"}},{"id":4,"name":"Class B","code":"GRC0001A","uuid":"gq2kZZikN76XEa4pQWsyAZBMxjKeHBJt0a840ZMSiuHGztuhYT0G6q5WcGgp8z6BD6nx0WSrrOTvEb4iQ0ewyB9Fa1M54CAv8HS2","level_id":null,"created_at":"2020-06-14T10:58:36.000000Z","updated_at":"2020-06-14T11:39:59.000000Z","level":null}]

1 Ответ

1 голос
/ 16 июня 2020

Ваш первый шаблон Blade почти правильный.

Проблема в том, что одной или нескольким вашим записям не назначено Level (level_id=null), но вы все еще пытаетесь извлечь свойство name из $stream->level, то есть null.

Просто добавьте проверку уровня $ stream-> перед тем, как пытаться получить доступ / распечатать его свойства. Например:

@if($stream->level)
   {{ $stream->level->name }} 
@endif

или

{{ $stream->level ? $stream->level->name : 'No Level Attached' }}

или

{{ optional($stream->level)->name }}

et c.

...