Многочисленные отношения в Laravel, получение данных из связанных таблиц и отображение в блейде - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть две таблицы, связанные многими со многими в Laravel Framework. Я могу отображать данные из каждой таблицы отдельно, но не через отношения, взяв одну запись из первой таблицы и проверив связанные записи во второй таблице. В тинкере он нормально обращается к данным.

Отношения:

public function underperformances() {
        return $this->belongsToMany(Underperformance::Class);
    }
...
  public function procedures() {
        return $this->belongsToMany(Procedure::class);
    }

Моя часть контроллера ресурсов:

...
use App\Underperformance;
use App\Procedure;
...

public function index()
  {
       $books = Underperformance::orderBy('id','desc')->paginate(9);
       $procedures = Procedure::all();
       return view('underpcon.underps', compact('books', 'procedures'));
   }

Маршрут:

Route::get('/underps', 'UnderpsController@index');

Если Я пытаюсь отобразить данные следующим образом:

@foreach($procedures as $procedure) 
  <li>{{$procedure->underperformances}}</li>
 @endforeach

Я получаю в браузере такой формат:

[{"id":1,"title":"Spare part not taken before service","description":"tekstas","level":"1","costs":600 ...

Это правильные данные из связанной таблицы, но я не могу выбрать дальнейшие параметры c столбец из этой таблицы. Например, это не работает:

@foreach($procedures as $procedure) 
  <li>{{$procedure->underperformances->id}}</li>
 @endforeach

Ни этот:

 @foreach ($procedures->underperformances as $underperformance) 
 <li>{{$underperformance->id}}</li>
@endforeach
  1. Как выбрать записи соответствующей таблицы и отобразить указанные c данные из этого таблица?
  2. Какой бы это был обычный способ сделать это?

1 Ответ

0 голосов
/ 09 февраля 2020
@foreach($procedures as $procedure) 
  <li>{{$procedure->underperformances->id}}</li>
 @endforeach

^ Здесь $procedure->underperformances вернет коллекцию , а не один элемент, поэтому вам нужно рассматривать его как массив, вы не сможете получить прямой доступ к id вы можете либо @foreach, либо использовать метод pluck в Laravel коллекциях .

...