@sizest
Начинающий веб-разработчик

Как вывести «новую» переменную?

Здравствуйте, пытаюсь динамически выводить всех пользователей используя "paginate" в Laravel, столкнулся с такой проблемой, имею created_at = 2020-03-12 06:42:58 хочу преобразовать в 9-го марта 2020, вроде бы все и получается но для этого надо как то либо изменить created_at либо заменить "новой" переменной.

ПРИМЕР КОДА:

$users = User::get();
  foreach ($users as $u) {
     $date = Carbon::parse($u->created_at, 'UTC');
     $u->dfh = $date->isoFormat('Do MMMM YYYY');
   }


Такими действиями я могу вывести всех пользователей и изменить created_at, но при этом выводятся все пользователи. Я пошел по другому методу.

$users = new User;
  if($request->q)
    {
      $users = $users->where('name', 'like', '%'.$request->q.'%')->orWhere('email', $request->q);
    }
    $users = $users->paginate(config('stisla.perpage'))->appends(['q' => $request->q]);


Вопрос как мне в новом методе изменить created_at, через foreach пробовал, либо и вовсе последнего в базе юзера выводит либо ошибку...
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
neuotq
@neuotq
full stack php, стартапы, прокрастинация
Есть простой вариант, легче вам будет сделать так:
в моделе User
/**
 *  Получаем читаемую дату.
 *
 * @return string
 */
public function getHumanDateAttribute()
{
  //Таймзону лучше брать из настроек приложение, а не хардкод
  $timezone = config('app.timezone');
   return  Carbon::parse($this->created_at, $timezone)->isoFormat('Do MMMM YYYY');
}


Ну и потом в коде или в шаблонах вызываешь
$user->human_date;
Если делаешь сериализацию в json и нужно чтобы этот атрибут был и там, то в моделе добавляешь:
/**
     * The accessors to append to the model's array form.
     *
     * @var array
     */
    protected $appends = ['human_date'];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы