我有一张名为 Package 的表。 目前,我想实际过滤表格。 假设用户将值插入到变量中,例如,from = 2/3/2020 和 to = 10/3/2020。 然后它将在我的编码中计算并获得天数,结果 noOfdays = 8 天。 所以,从持续时间,它会确定它在8天的持续时间内属于哪些包裹。

天数计算:

        $today = Carbon::now();

        $dt1 = Carbon::createFromFormat('d/m/Y',$departure);
        $dt2 = Carbon::createFromFormat('d/m/Y',$arrival);

        $noOfDays = $dt1->diffInDays($dt2);

计算没有错误,当 dd($noOfDays) 时,结果 = 8 天。

SQL 语句:

            $packages = Package::where([
                ['id', '=', $plan],
                ['from', '<=', $noOfDays, 'AND', 'to', '>=', $noOfDays],
            ])
            ->get();

包装表: 包装表

错误部分是,当我过滤时,它会得到包 1 和包 2。它应该只得到包 2。我认为它在 SQL 语句的某个地方有问题。 有谁遇到过这种情况吗? 因为从逻辑上讲,我认为 SQL 部分已经是正确的。 但它为什么过滤并获得包1?

#1楼 票数:1 已采纳

你必须把你的两个 where 子句分开才能得到你想要的东西。

 $packages = Package::where([
     ['id', '=', $plan], 
     ['from', '<=', $noOfDays], 
     ['to', '>=', $noOfDays]
            ])
 ->get();

为了更具可读性,如果你的代码像这样就好了

 $packages = Package::where('id', $plan)
            ->where('from', '<=', $noOfDays)
            ->where('to', '>=', $noOfDays)
            ->get();

#2楼 票数:0

更改您的第二个 where 语句。 Where 子句始终使用 ADN,除非您使用orWhere或将其嵌套在函数中。

['id', '=', $plan], 
['from', '<=', $noOfDays], 
['to', '>=', $noOfDays]

您作为AND传递的第四个参数并没有像您期望的那样使用。

哪些结果将 package1 包含在您的输出中。

  ask by asad translate from so

未解决问题?本站智能推荐:

1回复

如何在laravel中使用SQL组合不同数据库中的两个不同表

预计: select robotid, number from tool where is_active = 1 select * from robot_team where id = robotid( robotid from tool) foreach id(from robot_team
3回复

在Laravel中使用IFNULL

我在laravel有一个查询,它工作正常。 当表中没有相关条目时,只有一个问题is_download null。 经过一番研究,我发现有一个函数IFNULL通过使用我可以将is_download null更改为0 。 所以这是我的查询不起作用。 显示空白屏幕。 我可以在我的 phpmyadmin 中
1回复

在现有网站上使用laravel

我目前是一家公司的实习生,该公司的数据库托管在公司的网络上。 在过去的两个星期中,我一直在通过使用notepad ++编辑它们在网络上拥有的PHP文件并通过FileZilla上载它们的新功能和表单来更新数据库。 该网站上的用户告诉我,我应该尝试使用laravel清理代码并使代码井井有条。
2回复

为什么我在使用phpartisantinker时收到Laravel错误没有这样的表

更新:正如有人在评论和答案中建议的那样,它有效。 但是当我在保存后尝试在末尾写入$profile->user时,它显示为空。 有人能猜出为什么吗? 我正在使用 Laravel 7。我不断收到错误Illuminate/Database/QueryException with message 'S
1回复

Laravel:使用pluck从数据库中获取单一值

大家好我使用Laravel,我想从数据库中使用单个值pluck ,对该问题的查询必须写在Laravel方式不正常的sql.so如何写在Laravel这个sql查询? 我希望能够使用AS来更改列名和SUM 。实际上,我想要做的就是从total_quantity列中获取值,以执行我必须使用tota
2回复

如何保存用户的过滤条件?

我有一个 Laravel 应用程序,它使用 MySQL 数据库,其中包含跨多个表的数百万条记录,简化后如下所示: 用户可以根据大量条件(大约 15 个)搜索产品,涵盖几乎所有与产品相关的数据。 示例搜索可能如下所示: 返回前 50 个产品,其中: - 花费超过 5 英镑 - 成本低于 30 英镑
2回复

Laravel只搜索完全匹配

PHP/Laravel 新手在这里。 预期行为我想使用表单操作通过插入 id 来从数据库中获取数据,例如快递员跟踪 id。 到目前为止它正在工作,但我只想在数据库中存在该 id 时显示结果代码控制器 订单.blade 路线
1回复

这是我的laravel项目中的一个额外的“)”,它为我查询laravel

这是我的代码:DB::table('admins')->whereIn('a_id', function ($query) { $query->select('a_id')->fromRaw('( select a_id, row_number(