@NDll

Вывод данных left join Repository?

есть модель
User (name,email)
И модели UserAttribute (fullanme, birthday, city_id), UserService (premium,top) , City (name)

Есть интерфейс
interface UserRepositoryContract
{
    public function getAllUsersWithPaginate($perPage);
}

репозиторий UserRepository
class UserRepository implements UserRepositoryContract
{
    private $user;

    public function __construct($user)
    {
        $this->user = $user;
    }
}

как мне сделать запрос с leftJoin чтобы вывести всех пользователей с name,fullanme,city.name?

не могу понять как в репозитории сделать этот запрос
public function getAllUsers($perPage)
{
   
}
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@jazzus
Использовать связи. Добавить user_id в UserAttribute/UserService, hasOne связь
public function attributes()
{
    return $this->hasOne(UserAttribute::class);
}


UserAttribute связать с city
public function city()
{
  return $this->belongsTo(City::class);
}


Запрашивать
User::with('attributes.city', 'services')
    ->paginate($perPage);


Но UserAttribute лишняя прослойка. Данные поля лучше убрать в User и там прописывать связи.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы