gpt4 book ai didi

orm - Laravel 4 和 Eloquent : retrieving all records and all related records

转载 作者:行者123 更新时间:2023-12-05 01:11:53 26 4
gpt4 key购买 nike

我有两个类:ArtistInstrument。每个 Artist 可以演奏一个或多个 Instrument。每个 Instrument 可以分配给一个或多个 Artist。所以,我设置了以下类:

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


我能够成功地检索到 one 艺术家及其相关乐器,如下所示:

ArtistController.php

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

我有 3 个问题:

  1. 在我看来,我可以像这样输出 $artist:

    {{ $artist->firstname }}

    我可以遍历 $instruments 像:

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

    但是是否可以迭代 $artist (我知道只有一个 - 见 #2)并且对于每个 $artist 迭代它们的 $instruments ?

  2. 在我的 Controller 中,我将如何让 所有 艺术家以及每个艺术家与他们相关联的乐器在我的 View 中迭代它们的最终目标,如 #1 中所述。 p>

  3. 上面的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() 未定义。

我假设我的模特关系中有什么不对劲的地方。我还尝试用 hasMany 定义我在 Artist.php 中的关系(我认为说“每个艺术家都有很多乐器”更有意义,但这给了我一个错误,因为它需要一个名为 artists_instruments 的表,并且它还试图检索该表中不存在的列(如 name)。

最佳答案

你的模特关系很好。

Controller :

$artists = Artist::with('instruments')->get();

return \View::make('artists')->withArtists($artists);

查看:

@foreach ($artists as $artist)

<h1>{{ $artist->firstname }}</h1>

@foreach ($artist->instruments as $instrument)

<h2>{{ $instrument->name }}</h2>

@endforeach

@endforeach

关于orm - Laravel 4 和 Eloquent : retrieving all records and all related records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21735011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com