Laravel 5.4 - 从每个重复数据行中获取一个数据

时间:2018-02-12 03:59:59

标签: php laravel sqlite laravel-5 laravel-5.4

我想使用select选项显示从表

的created_at列中获取的月份
// item_ins
+----+--------+---------------------+
| id |  item  |     created_at      |
+----+--------+---------------------+
|  1 | item 1 | 2017-12-11 10:37:52 |
|  2 | item 2 | 2017-12-11 10:38:17 |
|  3 | item 3 | 2018-01-12 01:28:43 |
|  4 | item 4 | 2018-01-12 01:30:14 |
|  5 | item 5 | 2018-02-12 01:30:05 |
|  6 | item 6 | 2018-02-12 01:30:42 |
+----+--------+---------------------+
表中有两个月的12月,1月和2月,我希望每个月都有一个,我试试这个

$months= ItemIn::distinct('created_at')->pluck('created_at');

但我每个月仍然会得到相同的两个月,因为时间不一样,如下所示

并且我仍然对如何获得一个月感到困惑,因为通过上述方式我也得到了数年和数天

[
    {
        "date": "2017-12-11 10:37:52.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    {
        "date": "2017-12-11 10:38:17.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    {
        "date": "2018-01-12 01:28:43.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    {
        "date": "2018-01-12 01:29:14.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    {
        "date": "2018-02-12 01:30:05.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    {
        "date": "2018-02-12 01:30:22.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
]

4 个答案:

答案 0 :(得分:2)

如果时间不存在问题,您可以在使用选择查询本身时处理此问题,如果您选择使用子字符串。

select id, item, SUBSTRING(created_at, 1, 11) as created_at
from test
group by created_at;

答案 1 :(得分:1)

将CAST与原始查询结合使用,以获得您想要的结果,

$data = \DB::table('item_ins')
        ->select(\DB::raw('CAST(created_at as date) as created_at'))
        ->distinct('created_at')->get();

您可以在此处查看文档https://github.com/NuGet/Home/issues/5688

我希望你能理解。

答案 2 :(得分:1)

使用 Carbon

在视图中对其进行格式化
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}

或在模型中使用accessors重新格式化日期字段

public function getCreatedAtAttribute($value) {
     return \Carbon\Carbon::parse($value)->format('m');
}

然后$model->created_at将采用所需的格式

答案 3 :(得分:0)

使用protected $date; public function __construct($attributes = array(), Request $request){ parent::__construct($attributes); $this->date = Carbon::parse($request->toDate)->format('Y-m-d'); }

groupBy()