我有三个表,分别是以下用户,mapas,marcadores
一个用户有几个mapas
一个mapa有几个marcadores
我想做的是显示属于已登录用户的mapas的marcadore。
这是表格和关系
这是我正在使用的控制器中的功能:
public function index()
{
$mapas = Mapa::orderBy('id', 'DESC')->where('user_id', auth()->user()->id);
$marcadores = Marcador::orderBy('id', 'DESC')->where('mapa_id');
return view('user.marcadores.index', compact('marcadores'));
}
谢谢你的帮助
最佳答案
您正在尝试先获取所有mapas ID,然后根据这些ID过滤marcadore。尝试使用以下代码:
public function index()
{
$mapas = Mapa::orderBy('id', 'DESC')->where('user_id', auth()->user()->id)->pluck('id')->toArray();
$marcadores = Marcador::orderBy('id', 'DESC')->whereIn('mapa_id', $mapas)->get();
return view('user.marcadores.index', compact('marcadores'));
}
关于php - 如何在 Eloquent Laravel中与三个表进行协商,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52934434/