Ответы пользователя по тегу Laravel
  • Как реализовать индивидуальную страницу для каждого пользователя в Laravel?

    @jazzus
    Если в отношения пока не вникнуть, то есть максимально простой способ:
    1)В таблице tasks создать столбик user_id. Его желательно связать с users, но на начальных этапах лучше не забивать голову такими мелочами)) Все равно потом 10 раз потом все переделывать, сносить таблицы, все переименовывать, переписывать и т.д.
    2) Когда создаете task записываете в user_id =Auth::id();.
    $task=new Task;
    $task->user_id = Auth::id();
    $task->save();


    Зачем это? Чтобы получить id авторизованного в данный момент пользователя и тем самым прописать, что типа задача принадлежит ему.
    При этом нужно не забыть подключить фасад auth( use Auth в шапке контроллера над названием класса);
    3) Все задача привязана. Теперь нужно получить их.
    $tasks=Task::where('user_id',Auth::id())
                                          ->get();

    теперь в переменной $tasks будут задачи авторизованного в данный момент пользователя.
    4) Вам наверняка захочется их отсортировать, подсчитать количество и сделать пагинацию.
    Поэтому можно будет прописать
    $tasks=Task::where('user_id',Auth::id());
    $count = $tasks->count();
    $tasks=$tasks->orderBy('updated_at', 'desc')
                          ->paginate(20);

    Это задачи пользователя с сортировкой по дате изменения, количеством и по 20 записей на страницу.
    Ларавель пагинацию сделает автоматом. Вам нужно будет только разместить в шаблоне.
    {{ $tasks->links() }}
    Все можно запускать в продакшен
    Ответ написан
    Комментировать
  • Что лучше – дублировать запрос к базе или дублировать объект в методах Laravel?

    @jazzus Автор вопроса
    Да нет я не просто так делю) Здесь разделил из-за многократного применения этих методов в контроллерах. $product не только для поиска файлов. Он в шаблоне и контроллере используется. Поэтому нужно делить на методы/переменные. + проверить, что они существуют
    В данный момент там уже все переделал. file получаю в модели Product.
    public function superfile()  {  
    return $this->file()->where('type', 10);
    }


    и в контроллерах

    $superfile=$product->superfile();

    Сам вопрос уже понятен. metod($product) не дублирует объект, а ссылается на него. Я думал, что дублирует)
    Ответ написан
    Комментировать
  • Как убрать поля из Laravel Resource связанных отношений?

    @jazzus Автор вопроса
    Еще один вариант к варианту Kostik_1993 - это указывать в модели запрещенные к показу свойства protected $hidden. Пример:
    protected $hidden = [
             'updated_at', 'created_at', 'id'];

    Что скроет из всех json запросов указанные 3 свойства
    Ответ написан
    Комментировать