我有三个表,分别是以下用户,mapas,marcadores

一个用户有几个mapas

一个mapa有几个marcadores

我想做的是显示属于已登录用户的mapas的marcadore。

这是表格和关系

php - 如何在 Eloquent Laravel中与三个表进行协商-LMLPHP

这是我正在使用的控制器中的功能:

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/

10-13 08:49