2017-09-24 1 views
1

J'ai du mal à prendre une date et je ne reçois que l'année de la date. Ma date est affichée et enregistrée dans ma base de données en tant que: 2014-09-07. Ce que je veux seulement prendre est l'année de cette date (qui est 2014).Laravel - Prendre seulement l'année à partir de la date dans la base de données

Voici mon code pour prendre les dates de la base de données:

$year = DB::table('pets')->pluck('dates')->unique(); 

Ce choisit la chaque date unique à partir de la colonne dates. Cela fonctionne parfaitement et parvient à afficher la date complète sans aucun problème. Jusqu'ici j'ai essayé ceci: J'ai réussi à obtenir seulement l'année en utilisant selectRaw('substr(dates,1,4) as year'). Cela se traduit par: {"year":"2014"}. Je ne pouvais pas me débarrasser des crochets et supposer que c'est dans un mauvais format?

Fondamentalement, j'ai besoin d'aide pour obtenir seulement l'année à partir de la date qui se trouve dans une base de données mySQL.

+0

En plumerai le terrain est dans les dates, mais selectRaw votre domaine est le lancement. Vous sélectionnez un champ incorrect. –

+0

@HakanSOMEZ Oups, mon erreur. Copié le mauvais code. J'ai édité ma question correctement! – spacetravel

+0

Le résultat est-il toujours comme ceci ou parfois? –

Répondre

1

Je pense que vous utilisez get() lorsque vous utilisez selectRaw(), puis encoder json. Donc, il comprend le nom du champ. Vous devez utiliser pluck() si vous obtenez une colonne ou si vous obtenez une valeur, vous devez utiliser value().

$year = DB::table('pets')->selectRaw('substr(dates,1,4) as dates')->pluck('dates')->unique(); 

Ou en lame

@php($year =(json_decode($year, true))['year']) 
+0

Ah. Je vois ce que je faisais de mal. Cette réponse fonctionne comme Paul. – spacetravel