2016-12-01 37 views
0

我怎樣才能獲得的年,月&日分別(Note.this列有多個行。) 數據庫中的數據例如: 2015年8月13日, 2016- 07-31, 2016年8月2日從列從動態數據庫訪問一個數據有很多行

public function index() 
    { 

//scholar_birthday - column name 
$bday = Scholar::select('scholar_birthday')->get(); 
dd($bday); 
$date = explode("-", $bday); 

$d = $date[2]; 
$m = $date[1]; 
$y = $date[0]; 

<!--Static Data--> 
//$year = '1991'; 
//$month = '12'; 
//$day = '19'; 

$howOldAmI = Carbon::createFromDate($y,$m,$d)->age; 

dd($howOldAmI,$bday); 
     return view('pages.Index'); 
    } 

此代碼不能正常工作!希望每個人都可以修復這個邏輯我。

更新代碼:使用錯誤 「未知或壞時區([{」 scholar_birthday 「:」 1221年2月13日00:00:00 「},」 數據庫:擡頭| scholar_birthday | 值| 2015-08- 13 |
什麼毛病我的數據,或者有事情做與設置爲在phpMyAdmin或laravel時區 下面是代碼:試錯

public function index() 
{  
$bday = Scholar::select('scholar_birthday')->get(); 
$format = 'y/m/d'; 
$year = 'y'; 
$month = 'm'; 
$day = 'd'; 
$data = Carbon::createFromDate($year, $month, $day,$bday); 

dd($data); 
     return view('pages.Index'); 
    } 
} 

Update.Dob,獨立的數據庫只? 。我的實際工作是來自其他databse的學者模型。這就是我如何保存從我的blade.php 日期輸入注意:我已經保存了t他在單個列中將輸入數據記錄到數據庫中。是正確的還是需要將y/m/d保存在單獨的列中?但這是我的輸入「<input type="date" name="date" class="form-control" >"。因此,這將保存爲單列。我應用你的代碼訪問數據?

$date = $request->input('date'); 
     $dob = new Dob; 
     $dateOfBirth = Carbon::createFromFormat('Y-m-d',$date,'UTC') 
     ->tz('UTC') 
     ->toDateString(); // '2014-02-21' 
     $dob->date_of_birth = $dateOfBirth; 
     $dob->save(); 
     return view('pages.Ngo.AddDob'); 

//這個控制器

$bday = Dob::select('date_of_birth')->get(); 

的問題是在這裏...

$age = Carbon::createFromDate(,,,$bday)->age; 

什麼,我想在這裏實現的是讓age.What是不對的code here:

$today = Carbon::now()->toDateString(); 
$bday = Dob::select('date_of_birth')->get(); 
$age = $bday->diff($today)->age; 

error: 爲foreach提供的參數無效() dd($ age);

/數據庫表/

id 
    2 

    date_of_birth    
    2016-12-07 

    created_at 
    2016-12-04 12:47:59 

    updated_at 
    2016-12-04 12:47:59 
+0

是否將scholar_birthday創建爲日期對象? –

+0

@Scott Plunkett -Sir,我把我的數據庫設置爲varchar作爲日期。因爲它是一個字符串。我想按照我想要的單獨訪問。它可以是年份或月份,但在我的情況下,我想要y/m/d,所以我可以動態地將它放入參數Carbon :: createFromDate($ y,$ m,$ d)。我測試過靜態數據並且它的工作正常。我想要這個scholar_birthday的所有行列它的,因爲我想比較,並從當前日期得到差異獲得age.This年齡然後是比較找到匹配的年齡,我想檢索。 – Chee

+0

對不起,我沒有關注。你是否在下面嘗試我的答案? –

回答

0

而不是通過利用爆炸()獲得的特定值的麻煩去的,只是通過原來的日期作爲日期對象。

在(/ Scholar.php在應用程序默認情況下)添加到模型如下:

protected $dates = [ 
    'created_at', 
    'updated_at', 
    'deleted_at', // If you are using softDeletes 
    'scholar_birthday 
]; 

一旦列添加到日期突變,我們將用碳做所有的繁重我們。確保在任何地方使用碳門面添加適當使用聲明:

use Carbon\Carbon; 

然後,加入生日到數據庫時,將其添加爲像這樣一個碳對象:

Carbon::createFromDate($year, $month, $day, 'UTC'); 

一旦你保存條目,從該對象檢索特定日/月/年,請執行以下操作:

$scholar = Scholar::find($idOfScholar); 
$bday = $scholar->scholar_birthday 

Day: $bday->day 
Month: $bday->month 
Year: $bday->year 

這將得到一個單一的。否則,你需要用foreach()或其他循環機制從一行到另一行迭代。

讓我知道你是否還有其他問題。

+0

這是我做的,但它會產生一個錯誤「未知或壞時區」 ----更新後的代碼:公共功能指數(){ \t \t $ BDAY =學者::選擇(‘scholar_birthday’) - >得到( ); $ format ='y/m/d'; $ year ='y'; $ month ='m'; $ day ='d'; $ data = Carbon :: createFromDate($ year,$ month,$ day,$ bday); dd($ data); \t \t return view('pages.Index'); \t} } – Chee

+0

未經測試,但我確定了時區。 –

+0

先生在我的數據庫中,dob被保存爲字符串。我想知道爲什麼它尋找我不需要的時區,我只需要按年/月/日提取日期。 – Chee