9

如何将 laravel 中的日期格式从“2016-03-12”更改为“12-Mar-2016”

$results = DB::table('customers as cust')
        ->where('cust.id',$id)
        ->select("cust.*","cust.cust_dob as dob")
        ->first();

我应该使用 laravel 原始查询吗?

我试过这个,

 ->select("cust.*","DATE_FORMAT(cust.cust_dob, '%d-%M-%Y') as formatted_dob")

请对此有任何指导。

4

5 回答 5

25

尝试使用这个:

$results = DB::table('customers as cust')
             ->where('cust.id',$id)
             ->select(DB::raw('DATE_FORMAT(cust.cust_dob, "%d-%b-%Y") as formatted_dob'))
             ->first();
于 2016-03-10T08:03:52.030 回答
8

Laravel 使用Carbon作为日期时间,因此您可以像以下代码一样编写它:

$results = DB::table('customers as cust')
            ->where('cust.id',$id)
            ->select("cust.*","cust.cust_dob as dob")
            ->first();
echo $results->dob->format('d-m-Y');
于 2016-03-10T07:18:17.693 回答
6

由于除了使用原始查询之外别无他法,我正在使用这样的方法。它对我有用。

->select("cust.*", DB::raw("DATE_FORMAT(cust.cust_dob, '%d-%b-%Y') as formatted_dob"))
于 2016-03-10T07:15:58.967 回答
0

您始终可以使用 Carbon->format('m/d/Y');来更改格式。

或者您可以只使用selectRaw来构建您的查询。

此外,您可以尝试通过设置$dateFormat为要使用的日期格式来使用日期修改器: https ://laravel.com/docs/5.1/eloquent-mutators#date-mutators

于 2016-03-10T07:02:57.283 回答
0

Laravel 提供了定义访问器/修改器的机会。在这种情况下,您可以使用它而不是通过查询来完成。

我会在客户模型类中添加方法

public function getCustDobAttribute($value) {
    return //Format the value Which represent the value in database;
}

示例: 假设您要检索客户名称,您希望将其作为 First 承租人资本,其余的则很小。

public function getFirstNameAttribute($value)
{
    return ucfirst($value);
}

参考:

https://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators

于 2016-03-10T07:31:17.263 回答