Как показать временную метку unix в представлении лезвия из поля created_at или updated_at в базе данных laravel?

Я хочу получить временную метку UNIX или преобразовать дату created_at или updated_at в формат временной метки UNIX из полей базы данных (created_at и updated_at) в laravel 5.8, как я могу это сделать?

это мой код в моем контроллере:

public function viewArchives(){
$data = Archive::select(‘created_at’)->get();
return view(‘view.archives’, compact(‘data’));
}

и в представлении/archives.blade.php:

<?php echo $data;?>

результат:

{“created_at”:”2019-03-17 19:10:30″}

но я хочу, чтобы результат был таким:

{“created_at”:”1552849830″}

как можно получить этот результат?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
6
0
2 687
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Добавьте представление strtotime()/archives.blade.php :

<?php echo strtotime( $data );?>

Использование strtotime правильно, но на самом деле в его примере $data — это не просто строка даты, это набор значений ключа.

namelivia 28.03.2019 14:22

@namelivia Вы правы. Сначала получите значение created_at из $data, а затем преобразуйте strtotime.

Amit Senjaliya 28.03.2019 14:26

@namelivia, лайк {{ $data['created_at'] }} ИЛИ {{ $data->created_at }}

Amit Senjaliya 28.03.2019 14:28

@AmitSenjaliya, когда я использую это >>{{ $data['created_at'] }}, он говорит: Undefined index: created_at ... . И когда я использую это>>{{ $data->created_at }}, он говорит: Свойство [created_at] не существует в этом экземпляре коллекции.

Amin Arjmand 28.03.2019 14:42

@AminArjmand В вашем контроллере измените метод get() на toArray(). Нравится $data = Archive::select(‘created_at’)->toArray(); И использовать переменную в лезвии {{ $data['created_at'] }}

Amit Senjaliya 28.03.2019 14:54

@AmitSenjaliya, я изменил на toArray(), и ошибка >> Call to undefined method Illuminate\Database\Eloquent\Builder::toArray()

Amin Arjmand 28.03.2019 16:05
Ответ принят как подходящий
$string = '2019-03-17 19:10:30';

$obj = new stdClass;
$obj->created_at = $string;

$collection = [$obj];

foreach ($collection as $k => &$v) {
    $collection[$k]->created_at = strtotime($v->created_at);
}

//var_dump($collection);

или

$string = '2019-03-17 19:10:30';

$obj = new stdClass;
$obj->created_at = $string;

$collection = [$obj];

array_walk($collection, function (&$item, $key) {
    $item->created_at = strtotime($item->created_at);
});

//var_dump($collection);

Или в вашем случае

    public function viewArchives()
    {
        $data = Archive::select('created_at')->get();
        foreach ($data as $k => &$v) {
            $v->created_at = strtotime($v->created_at);
        }
        return view('view.archives', compact('data'));
    }

или

    public function viewArchives()
    {
        $data = Archive::select('created_at')->get();
        array_walk($data, function (&$item, $key) {
            $item->created_at = strtotime($item->created_at);
        });
        return view('view.archives', compact('data'));
    }

Это хорошее место для использования функции array_walk().

Спасибо @Tpojka, ваше решение сработало

Amin Arjmand 29.03.2019 13:29

С Eloquent Model можно фактически определить $casts для каждого столбца:

class SomeModel extends Model
{

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'created_at' => 'datetime'
    ];
}

Если вместо этого вам нужны временные метки эпохи, просто удалите это приведение (которое, вероятно, присутствует).


Когда метка времени не из какого-либо Eloquent Model, ее все равно можно отрендерить с помощью Blade:

@php
$dt = new DateTime();
echo $dt->setTimestamp( $timestamp )->format("Y-m-d H:m:s");
@endphp

Или наоборот:

@php
echo strtotime( $isodate );
@endphp

Другие вопросы по теме