Самостоятельный сценарий. Вы можете сделать это, создав псевдоним своего стола Users
, а затем присоединитесь к Users
.
$users = User::join('countries', 'countries.id', '=', 'users.country_id')
->leftJoin('users as promoters', 'promoters.id', '=', 'users.promoter_id')->select([
'users.id',
'users.promoter_id',
'users.family_name',
'users.name',
'promoters.family_name as promoter_family_name',
'promoters.name as promoter_name',
...
Другой способ, в вашей User
модели определить отношение
public function promoter()
{
return $this->belongsTo(User::class, 'promoter_id', 'id');
}
Теперь перепишем запрос в контроллер
$users = User::with('promoter')->join('countries', 'countries.id', '=', 'users.country_id')->select([
...
Теперь вы можете получить доступ к детали промоторов по $user->promoter->name, $user->promoter->family_name
и так далее.
Также вы можете сделать то же самое для Country
тоже, определяя отношения страны вместо того, чтобы присоединиться к вашей User
модели, а затем User::with('promoter', 'country')->...
Спасибо. Моя проблема в том, что это нужно для запроса плагина datatables. Так что это должно быть сделано с запросом – derdida
OK. Понял. Можете ли вы дать попробовать с этим: '$ пользователей = User :: присоединиться ('страны', 'countries.id', '=', 'users.country_id') \t \t \t \t -> LeftJoin ('пользователей в качестве промоутеров ',' promoters.id ',' = ',' users.promoter_id ') -> выберите ([ ' users.id ', ' users.promoter_id ', ' users.family_name ', ' пользователей. название», 'promoters.family_name в promoter_family_name', \t \t 'promoters.name, как promoter_name', ...' Проверьте обновленный ответ. –
Спасибо, что работает. – derdida