在laravel中以y / m / d格式计算年数

时间:2017-01-18 15:44:49

标签: laravel date

我将这些作为记录样本 2016/01 / 13,2016 / 01 / 15,2016 / 01 / 25,2015 / 01 / 14,2015 / 01 / 17,2015 / 01/28等。

关于如何计算(yyyy)1月份出现的任何建议,以便我得到2.(2016,2015)

$stocks = DB::table('inventories')

        ->select('inventories.*',DB::raw('count(*) as count,date_sold'))
        ->whereMonth('complete_sold','=', Carbon::today()->month)
        ->groupBy('inventories.drug_id')
        ->get();

2 个答案:

答案 0 :(得分:1)

选项1:

如果您只需要计数而不是数据库中的记录,请执行以下操作:

$stocks = DB::table('inventories')
    ->whereMonth('complete_sold','=', Carbon::today()->month)
    ->groupBy('inventories.drug_id')
    ->count();

这样$ stock将等于找到的记录数量(例如:2)。计数将在SQL级别执行(例如:SELECT count(*) ....)。

选项2:

如果您稍后需要这些记录,可以这样做:

$stocks = DB::table('inventories')
    ->whereMonth('complete_sold','=', Carbon::today()->month)
    ->groupBy('inventories.drug_id')
    ->get();

$stockCount = $stock->count();

这样$stock将保存查询结果(来自数据库的记录)。 $stockCount将是一些记录。计数将执行on collection (php)

答案 1 :(得分:0)

选项1:如果您只想要计数

$stocks = DB::table('inventories')
    ->whereMonth('complete_sold','=', Carbon::today()->month)
    ->distinct()->count("year(complete_sold)");

选项2 :如果您需要年份记录

$stocks = DB::table('inventories')
    ->whereMonth('complete_sold','=', Carbon::today()->month)
    ->select(DB::raw("year(complete_sold)"))
    ->groupBy(DB::raw("year(complete_sold)"))->get();