Изменить формат даты после красноречивого запроса laravel - PullRequest
0 голосов
/ 08 апреля 2020

После того, как я выполню этот запрос:

public function qryRecords($id)
    {
        $records = Record::with('place.country', 'place.city', 'place.organisation', 'framework', 'academy_year', 'status', 'type', 'student')
            ->where('student_id', '=', $id)
            ->get();

        return response()->json($records);
    }

Я бы хотел изменить формат даты academy_year, вот как он хранится в моей базе данных:

[
                    'start_date' => '2015-09-01',
                    'created_at' => now(),
                    'end_date' => '2016-06-30',
                    'is_archived' => true
                ],

Сейчас в моей модели я делаю это, чтобы получить даты в таблицах данных:

{
                        data: null,
                        render: function (data) {
                            return data.academy_year.start_date + ' <i class="fas fa-arrow-right"></i> <br> ' + data.academy_year.end_date;
                        }
                    },

Я знаю метод Carbon, но я не уверен, как использовать это в моей ситуации. Если бы это было возможно с Carbon, я хотел бы услышать, также если есть другие методы, которые я могу использовать.

Ответы [ 3 ]

0 голосов
/ 08 апреля 2020

Если у вас все в порядке с дополнительной библиотекой, вы можете попробовать Moment. js.

Например:

{
  data: null,
  render: function (data) {
    var formatted_start_date = moment(data.academy_year.start_date).format('dd.mm.yyyy')
    var formatted_end_date = moment(data.academy_year.end_date).format('dd.mm.yyyy')
    return formatted_start_date + ' <i class="fas fa-arrow-right"></i> <br> ' + formatted_end_date;
 }
},

Пожалуйста, обратитесь к документам форматирования, если хотите. быть отформатирован по-другому. https://momentjs.com/docs/# / отображение / формат /

0 голосов
/ 08 апреля 2020

В laravel у них есть ресурс для форматирования данных JSON. Вы можете использовать его для изменения формата даты

Более подробная информация здесь: https://laravel.com/docs/7.x/eloquent-resources

0 голосов
/ 08 апреля 2020

Есть 2 способа сделать это, и второй вариант слоев вместе с первым:

  1. Используйте мутатор даты в вашей модели (https://laravel.com/docs/7.x/eloquent-mutators#date -mutators )

Модель записи:

protected $dates = [
        'start_date',
        'end_date'
    ];

Затем, где вы хотите использовать дату в своем пользовательском формате, сделайте это:

$record->start_date->format('d-m-Y');//Customize format as you want.

Я бы использовал это вариант, если формат не нужно менять в будущем, а нужно использовать только пару раз.

Использовать метод доступа (https://laravel.com/docs/7.x/eloquent-mutators#defining -an-accessor ): (использовать вместе с ответом 1)

Модель записи:

function getFormattedStartDateAttribute()
{
    return $this->start_date->format('d-m-Y');
}

Если вы хотите отформатировать дату, вы можете сделать:

$record->formatted_start_date;

Я предпочитаю второй вариант, потому что тогда вам нужно определить выходной формат один раз, а затем использовать $ record-> formatted_start_date каждый раз, когда вы хотите 'front-end-format'

Дайте мне знать, если он работает для вас:)

...