Laravel 4 и Eloquent: получение всех записей и всех связанных записей

У меня есть два класса:Artist а такжеInstrument, каждыйArtist может играть один или несколькоInstruments. И каждыйInstrument может быть назначен одному или несколькимArtists. Итак, я настроил следующие классы:

Artist.php

public function instruments() {
    return $this->belongsToMany('App\Models\Instrument');
}

Instrument.php

public function artists() {
    return $this->belongsToMany('\App\Models\Artist');
}


Тогда у меня есть три таблицы базы данных:

artists: id, firstname, lastname, (timestamps)
instruments: id, name
artist_instrument: id, artist_id, instrument_id


Я могу успешно получитьодин художник и связанные с ним инструменты, такие как:

ArtistController.php

$artist = Artist::find($artist_id);
$instruments = $artist->instruments()->get();
return \View::make('artists')->with('artists', $artists)->with('instruments', $instruments);

У меня есть 3 вопроса:

На мой взгляд, я могу вывести$artist лайк:

{{ $artist->firstname }}

и я могу перебрать$instruments лайк:

@foreach ($instruments as $instrument)
    <h2>{{ $instrument->name }}</h2>
@endforeach

но можно ли перебирать$artist (Я знаю, что есть только один - см. № 2) и для каждого$artist перебирать их$instruments?

В моем контроллере, как бы я получитьвсе артисты и для каждого из них их связанные инструменты с конечной целью итерации по ним, на мой взгляд, как описано в # 1.

Можно ли получить только определенные столбцы в приведенном выше примереArtistController.php? Я пробовал это:

$artist = Artist::where('id', $artist_id)->get('firstname');
$instruments = $artist->instruments()->get();
return \View::make('artists')->with('artists', $artists)->with('instruments', $instruments);

но я получаю сообщение об ошибкеCollection::instruments() не определено

Я предполагаю, что что-то не так в моих модельных отношениях. Я также попытался определить мои отношения вArtist.php сhasMany (Я думаю, что имеет больше смысла говорить «У каждого исполнителя есть много инструментов», но это дает мне ошибку, потому что ожидает таблицу с именемartists_instruments и он также пытается получить столбцы, которые не существуют в этой таблице (например,name).

Ответы на вопрос(1)

Ваш ответ на вопрос