За последние 24 часа нас посетили 20142 программиста и 1008 роботов. Сейчас ищут 352 программиста ...

Жадная загрузка с Order By

Тема в разделе "Laravel", создана пользователем alex.kot, 31 мар 2020.

Метки:
  1. alex.kot

    alex.kot Новичок

    С нами с:
    10 апр 2019
    Сообщения:
    23
    Симпатии:
    0
    Добрый день!
    Пытаюсь вывести список заданий сортировав по user name, но что то не получается.
    Вот пример запроса:
    PHP:
    1. Task::with(['user' => function ($query) {
    2.       $query->orderBy('name', 'ASC');
    3. }]);
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    что именно не получается то?
     
  3. alex.kot

    alex.kot Новичок

    С нами с:
    10 апр 2019
    Сообщения:
    23
    Симпатии:
    0
    orderBy не работает, без сортировки все выводит.
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    так и не должно,
    вы посмотрите результат через dd()
    user - это же целый объект, а какая у вас там связь? Если один ко многим - так у вас не один объект будет а несколько - вот они то и будут отсортированы
     
  5. alex.kot

    alex.kot Новичок

    С нами с:
    10 апр 2019
    Сообщения:
    23
    Симпатии:
    0
    Понял, а как сделать чтоб Task отсортировать по user name?
    --- Добавлено ---
    Связь в модели Task такая.
    PHP:
    1. public function user()
    2. {
    3.     return $this->hasOne(User::class, 'id', 'user_id');
    4. }
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    я бы сделал поле

    PHP:
    1. $appends = ['user_name'];
    2.  
    3.   public function getUserNameAttribute()
    4.   {
    5.   return $this->hasOne(User::class, 'id', 'user_id');->value('name');
    6.   }
    и в запросе уже
    PHP:
    1. Task::orderBy('user_name', 'ASC')->get();
    с именами в бд могу ошибаться, ибо не знаю вашу структуру, принцип должен быть понятен
     
  7. alex.kot

    alex.kot Новичок

    С нами с:
    10 апр 2019
    Сообщения:
    23
    Симпатии:
    0
    Спасибо, попробую!