【问题标题】:laravel query builder how to only retrieve year and month from dateTime fieldlaravel 查询构建器如何仅从 dateTime 字段中检索年份和月份
【发布时间】:2018-03-15 17:07:48
【问题描述】:

我想从数据库中的 dateTime 字段中只选择月份和年份我试过这个

$historyMonth = App\Models\HistoryCostEstimation::where('user_id',$id)->orderBy('created_at','desc')->toDateString('Y-m')->get();

但它不起作用有什么建议吗?

【问题讨论】:

  • 您总是或在某些情况下想要这个?以及相关领域是什么?
  • 我总是需要它,并且相关字段是 'created_at' 它是 dateTime 字段
  • 因此您可以像这样public function getCreatedAtAttribute($date) { return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m'); }HistoryCostEstimation 中的 created_at 字段添加一个getter,而无需更改查询App\Models\HistoryCostEstimation::where('user_id',$id)->orderBy('created_at','desc')->get() 中的任何内容
  • 在循环中,如果它返回多条记录,您只需执行record->created_at !!
  • 它对你有用吗??

标签: laravel-5 eloquent query-builder laravel-query-builder


【解决方案1】:

由于您总是想要这种格式,您可以像这样在HistoryCostEstimation 模型中定义Accessor

public function getCreatedAtAttribute($date) { 
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m'); 
}

您可以在不进行任何转换的情况下查询记录:

App\Models\HistoryCostEstimation::where('user_id',$id)
                                  ->orde‌​rBy('created_at','de‌​sc')
                                  ->get();

【讨论】:

  • 真的很抱歉我离开了一段时间,非常感谢您的努力,它现在可以工作了,谢谢
猜你喜欢
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多