我有两个模特:
class Musician extends Model
{
public function instruments()
{
return $this->belongsToMany('App\Instrument', 'musicians_instruments');
}
}和
class Instrument extends Model
{
public function musicians()
{
return $this->belongsToMany('App\Musician', 'musicians_instruments');
}
}保存到数据库可以正常工作,就像我想要的那样。我在数据库中有三个表:
musicians
instruments
musicians_instruments (pivot table)文书-举例内容:
id name
1 guitar
2 piano
3 keyboard
4 DJ当音乐家注册时,他可以从1到3种乐器中选择演奏。例如,当他选择枢轴表中的吉他(1)和键盘(3)时,我们有(假设音乐家有id 2):
musicians_instruments
musician_id instrument_id
2 1
2 3我的问题是-请帮助我如何写查询,以获得所有的乐器,音乐家演奏。如果乔选择1,3,如何取下他所选择的所有乐器的名称。
以下- MusicianController:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Musician;
use Illuminate\Support\Facades\Hash;
class MusicianController extends Controller
{
public function index()
{
$musicians = Musician::all(); // it's for other musicians data
$musician = Musician::with('instruments')->find($musician_id);
return view('musicians', compact('musicians', 'musician'));
}发布于 2020-01-15 14:41:50
关于索引页(所有音乐家及其乐器的列表):
在Controller中使用以下代码:
public function index()
{
$musicians = App\Musician::with('instruments')->get();
return view('musicians', compact('musicians', 'musicians'));
}在视图中,使用以下代码:
@foreach($musicians as $musician)
{{ $musician->name; }}
<ul>
@foreach ($musician->instruments as $instrument)
<li>{{ $instrument->name }}<br></li>
@endforeach
</ul>
@endforeach对于配置文件页(特定音乐家的页面id = musician_id及其乐器):
在Controller中使用以下代码:
$musician = App\Musician::where("id",$musician_id)->with('instruments')->first();
return view('your/view/file', ['musician'=> $musician]);在视图中,使用以下代码:
{{ $musician->name }}
@foreach($musician->instruments as $instrument)
{{ $instrument->name; }}<br>
@endforeach欲了解更多细节,请访问:https://laravel.com/docs/6.x/eloquent-relationships
发布于 2020-01-15 14:16:27
您可以通过简单地使用您在各自模型中定义的方法来获得每个音乐家的乐器:
$musician = App\Musician::find($musician_id);
$instruments = $musician->instruments()->get();
foreach($instruments as $instrument) {
// $instrument->name;
}https://stackoverflow.com/questions/59752999
复制相似问题