The*_*ebs 43 mysql activerecord date where laravel-5.1
如何使用该created_at
字段仅获取今天创建的记录,而不是其他日期或时间?
我在想一个->where('created_at', '>=', Carbon::now())
但是我不确定它会起作用.
ash*_*ish 77
对于Laravel 5.6用户,你可以这样做
$posts = Post::whereDate('created_at', Carbon::today())->get();
Run Code Online (Sandbox Code Playgroud)
Cle*_*ode 53
使用Mysql
默认CURDATE
功能获取当天的所有记录.
$records = DB::table('users')->select(DB::raw('*'))
->whereRaw('Date(created_at) = CURDATE()')->get();
dd($record);
Run Code Online (Sandbox Code Playgroud)
注意
Carbon::now
vs 之间的区别Carbon::today
只是时间.
例如
打印日期Carbon::now
看起来像是:
2018-06-26 07:39:10.804786 UTC (+00:00)
同时Carbon::today
:
2018-06-26 00:00:00.0 UTC (+00:00)
获取今天创建的唯一记录now
可以获取为:
Post::whereDate('created_at', Carbon::now()->format('m/d/Y'))->get();
同时today
:
Post::whereDate('created_at', Carbon::today())->get();
UPDATE
从laravel 5.3开始,我们有默认的where子句
whereDate / whereMonth / whereDay / whereYear
$users = User::whereDate('created_at', DB::raw('CURDATE()'))->get();
Run Code Online (Sandbox Code Playgroud)
或与DB
外观
$users = DB::table('users')->whereDate('created_at', DB::raw('CURDATE()'))->get();
Run Code Online (Sandbox Code Playgroud)
使用上面列出的where子句
$users = User::whereMonth('created_at', date('m'))->get();
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->month;
//select * from `users` where month(`created_at`) = "04"
$users = User::whereDay('created_at', date('d'))->get();
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->day;
//select * from `users` where day(`created_at`) = "03"
$users = User::whereYear('created_at', date('Y'))->get();
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->year;
//select * from `users` where year(`created_at`) = "2017"
Run Code Online (Sandbox Code Playgroud)
小智 35
如果你在Laravel中使用Carbon(你应该,它真棒!),你可以简单地做到以下几点:
->where('created_at', '>=', Carbon::today())
Run Code Online (Sandbox Code Playgroud)
除了now()
和today()
,你也可以使用yesterday()
和tomorrow()
再使用以下命令:
startOfDay()
/endOfDay()
startOfWeek()
/endOfWeek()
startOfMonth()
/endOfMonth()
startOfYear()
/endOfYear()
startOfDecade()
/endOfDecade()
startOfCentury()
/endOfCentury()
Mah*_*alt 11
含碳:
return $model->where('created_at', '>=', \Carbon::today()->toDateString());
Run Code Online (Sandbox Code Playgroud)
没有碳:
return $model->where('created_at', '>=', date('Y-m-d').' 00:00:00');
Run Code Online (Sandbox Code Playgroud)
whereRaw('date(created_at) = curdate()')
如果时区不是问题或whereRaw('date(created_at) = ?', [Carbon::now()->format('Y-m-d')] )
其他原因,您可以使用.
由于该created_at
字段是时间戳,因此您只需要获取其日期部分并忽略时间部分.
出于可读性目的,我使用查询范围,使我的代码更具声明性。
namespace App\Models;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
// ...
/**
* Scope a query to only include today's entries.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeCreatedToday($query)
{
return $query->where('created_at', '>=', Carbon::today());
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
MyModel::createdToday()->get()
Run Code Online (Sandbox Code Playgroud)
Sql : select * from "my_models" where "created_at" >= ?
Bindings : ["2019-10-22T00:00:00.000000Z"]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
71107 次 |
最近记录: |