Недавно я столкнулся с похожим вопросом и сам нашел следующее решение. Возможно, есть более простые способы, но я думаю, это поможет вам.
Сначала мы опрашиваем всех пользователей с помощью first_name
== John
, как вы описали, и мы ограничиваем запрос выводом только идентификаторов.
$users = User::where('first_name', 'John')->get()->pluck('id');
Затем мы сопоставим это с результатом Students()
из модели страны. Поскольку я не знаю, к чему вы обращаетесь, чтобы получить страну, которую вы хотите, я просто возьму пример Нидерландов - вот откуда я.
$users = Country::where('name', 'the Netherlands')->students()->whereIn('id', $users)->get();
Чтобы это работало, вы должны убедиться, что в функции Students()
в вашей модели get()
опущено.
Окончательный «результат»:
$users = User::where('first_name', 'John')->get()->pluck('id');
$users = Country::where('name', 'the Netherlands')->students()->whereIn('id', $users)->get();