gpt4 book ai didi

php - 在 laravel 中查找 future 7 天内过生日的客户

转载 作者:行者123 更新时间:2023-12-04 14:19:20 24 4
gpt4 key购买 nike

我需要在 laravel 中获取 future 7 天内过生日的客户列表。我使用以下查询。该查询显示也通过了生日。

 $customerslist=Customers::WhereRaw('DAYOFYEAR(curdate()) <= DAYOFYEAR(date_of_birth) AND DAYOFYEAR(curdate()) + 7 >=  dayofyear(date_of_birth)' )->OrderBy(DB::raw("DAYOFYEAR(date_of_birth)"),'ASC')->get();

我使用下面列出的查询,但缺少一些客户
enter image description here

缺少客户

enter image description here

最佳答案

对于即时解决方案,我创建了原始查询

// start range 7 days ago
$start = date('z') + 1 - 7;
// end range 7 days from now
$end = date('z') + 1 + 7;
$customerslist = Customers::whereRaw("DAYOFYEAR(birthday) BETWEEN $start AND $end")->get();

已编辑

所以我创建了 5000 带有随机年份和日期的记录

MethodOne Using Eloquent filter


$checkRange =   array_map(
function ($date) {
return $date->format('Y-m-d');
},
\Carbon\CarbonPeriod::create(now(), now()->addDays(7))->toArray()
);


$carbonWay = Customer::get()->filter(function($eachCus) use ( $checkRange){
return in_array( $eachCus->dob, $checkRange);
});

但如果你有 众多客户 它会加热 sql server

Method Two QueryBuilder Way


 $eloquentway = Customer::whereDate('dob','>=', now())
->whereDate( 'dob', '<=', now()->addDays(7))
->get();

所以两个结果对我来说都是相同的结果

最后我检查了是否有 id 是数学所以
$idsofCarbon = $carbonWay->pluck('id')->toArray();
$idsofFilter = $elequentway->pluck('id')->toArray();

dump(array_diff( $idsofFilter, $idsofCarbon));
dump(array_diff( $idsofCarbon, $idsofFilter));

两者都给了我 []这意味着结果是准确的

有关日期过滤的更多信息

https://laraveldaily.com/eloquent-date-filtering-wheredate-and-other-methods/
https://laravel.com/docs/5.8/queries#where-clauses

如有问题请评论

希望能帮助到你

关于php - 在 laravel 中查找 future 7 天内过生日的客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56679104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com