Skocz do zawartości


 

Zdjęcie

laravel - problem z timestamp

laravel - problem z timestamp

  • Proszę się zalogować aby odpowiedzieć
4 odpowiedzi na ten temat

laravel - problem z timestamp

#1 Syndrom

Syndrom

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 330 postów

Napisany 23 marzec 2017 - 15:47

Witam,

Mam pewnie łatwy problem, ale nie ogarniam.

W bazie mam definicję kolumny jako:

`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

i w poprawnie dodaną wartość:

2017-03-22 10:38:37

 

ale jak pobieram w Laravelu za pomocą czy to all() czy get() to zawsze zwraca mi tylko datę bez czasu.

Gdzie to powinienem sformatować?

 

 


  • 0

#2 tb3.pl

tb3.pl

    Czasami na forum

  • Firma Bronze
  • 45 postów
  • Firma:Agencja Interaktywna CENTIB
  • Imię:Kasjan
  • Nazwisko:Rogal

Napisany 23 marzec 2017 - 16:07

Laravel standardowo powinien zwrócić Ci datę z godziną,

nie masz czasem w modelu metody getUpdatedAtAttribute ?


  • 0

#3 Syndrom

Syndrom

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 330 postów

Napisany 24 marzec 2017 - 08:09

Nie znalazłem takiej metody i niestety zwraca mi samą datę:

"updated_at":"2017-03-22"}]  

  • 0

#4 Macsch

Macsch

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 291 postów

Napisany 24 marzec 2017 - 21:50

Dodaj sobie do modelu:

protected $dateFormat = 'r';

  • 0

#5 Syndrom

Syndrom

    Stały użytkownik

  • WHT Pro
  • PipPipPipPipPip
  • 330 postów

Napisany 25 marzec 2017 - 01:00

Niestety nic to nie daje, nawet jak dodaje bezpośrednio w modelu, bez przeciążania

Przeciążyłem tą metodę:

protected function asDateTime($value)
        {
                // If this value is an integer, we will assume it is a UNIX timestamp's value
                // and format a Carbon object from this timestamp. This allows flexibility
                // when defining your date fields as they might be UNIX timestamps here.
                if (is_numeric($value))
                {
                        return Carbon::createFromTimestamp($value);
                }

                // If the value is in simply year, month, day format, we will instantiate the
                // Carbon instances from that format. Again, this provides for simple date
                // fields on the database, while still supporting Carbonized conversion.
                elseif (preg_match('/^(\d{4})-(\d{2})-(\d{2})$/', $value))
                {
                        return Carbon::createFromFormat('Y-m-d', $value)->startOfDay();
                }

                // Finally, we will just assume this date is in the format used by default on
                // the database connection and use that format to create the Carbon object
                // that is returned back out to the developers after we convert it here.
                elseif ( ! $value instanceof DateTime)
                {
                        $format = $this->getDateFormat();
                        return $value;
                }

                return Carbon::instance($value);
        }

i zmieniłem fragment:

                        return Carbon::createFromFormat($format, $value);

Nie wiem dlaczego tak się dzieje, ważne, że działa.

 

Może mi ktoś wytłumaczyć, bo to pewnie jest jakiś syf to co zrobiłem


Edytowany przez Syndrom, 28 marzec 2017 - 22:51.

  • 0





0 użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników