【发布时间】:2021-09-20 17:41:39
【问题描述】:
我有几个由 1:N 关系链接的模型:
用户 (1 -> N) Asignatura (1 -> N) Clase (1 -> N) Asiento
我想获得一个Asiento的集合模型,其中包含一个用户的所有Asiento。
我尝试了“明显”
$user->asignaturas->clases->asientos;
但由于$user->asignaturas 是一个集合,->clases 未被识别为有效方法(所有应有的关系,asignaturas()、clases() 和asientos() 已在各自的模型中创建)
所以我做了以下来解决这个问题:
$user = User::findorFail(Auth::user()->id);
$asignaturasArr = $user->asignaturas->pluck('id')->toArray();
$clases = Clase::whereIn('asignatura_id', $asignaturasArr)->get();
$clasesArr = $clases->pluck('id')->toArray();
$asientos = Asiento::whereIn('clase_id', $clasesArr)->get();
但我怀疑 Laravel 应该有一种不那么冗长的方式来完成这项工作,但我找不到它。
如果有任何专家的建议,我将不胜感激。
非常感谢您并致以最诚挚的问候。
【问题讨论】:
标签: laravel collections model relationship