gpt4 book ai didi

php - Laravel 数据库查询返回错误值

转载 作者:行者123 更新时间:2023-11-28 23:24:10 25 4
gpt4 key购买 nike

所以在我的数据库中,我有一个名为“records”的表,其中包含大约 1k 个条目。此表包含“id”、“title”、“date_finished”、“category_id”、“user_id”等字段。

"date_finished "默认为 0000-00-00 00:00:00 , 但用户可以将其更改为当前时间戳。因此,在此表中,大约一半具有默认值 date_finished另一半有习俗。

在我的 HTML 中我有 inputtype="month"以“2016-10”等格式向 Controller 发送年份和月份。

我只需要获取那些默认为 date_finished 的条目属性(property)或date_finished从输入中收到月份和年份。

我在 Controller 的开头写了

$record_query =  DB::table('records');

然后,我需要使用一些额外的选项,所以我有两个数组 — $users 和 $categories 包含一些 id。然后,我做

$record_query = $record_query
->where(function($q) use ($users){ $q->whereIn('records.user_id', $users); })
->orWhere(function($q) use ($categories){
$q->whereIn('records.category_id', $categories);
});

在那之后,我还剩下大约 700 个条目,从 1k 开始。

这是问题所在的部分。

为了只获取那些满足上述要求的条目,我这样做

$month = Input::get('month');
$record_query = $record_query->where(function($w) use($month){
$w->where('records.date_finished','0000-00-00 00:00:00')
->orWhere(function($q) use ($month){
$q->where('records.date_finished','!=','0000-00-00 00:00:00')
->whereBetween('records.date_finished',array(date('Y-m-d', strtotime($month)), date('Y-m-d', strtotime($month.'+1 month'))));
});
});

在这次修改之后,我得到了大约 300 个不符合这些要求的条目。我最后得到的数组包含一些默认为 date_finished 的随机条目和定制date_finished这与我从输入发送的没有任何共同之处。

当我直接在 SQL 中运行相同的查询时,我得到了正确的结果。

我哪里错了?

最佳答案

我想你需要类似的东西

$date = Carbon::createFromDate(null, $month, null);

$record_query = $record_query->where(function($w) use($date){
$w->where('records.date_finished','0000-00-00 00:00:00')
->orWhere(function($q) use ($date){
$q->whereBetween('records.date_finished', [$date->toDateString(), $date->addMonth()->toDateString()])));
});
});

关于php - Laravel 数据库查询返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134854/

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