首页 > 解决方案 > 如何在函数中使用 whereBetween 子句?

问题描述

我有一个包含一created_at列的表,基于created_at,我得到另一个名为: 的日期expired_at。但是,expired_at日期并未记录在数据库中。

如何在 Laravel 中过滤我的数据以fromDate显示toDate基于expired_at.

我只能看到我得到的唯一选择是expired_at在数据库中调用一条记录,然后运行类似以下的内容

$data=Table::whereBetween('expired_at', [$fromDate, $toDate])->get();

那么最好的解决方案是什么?如何使用whereBetween计算的函数expired_at

标签: phpdatabaselaraveleloquent

解决方案


以我的经验,最好将计算过程放在您的应用程序上,而不是使用您的数据库引擎来计算您的日期!

对于这种情况,您可以使用Laravel's Eloquent以实现您的目标。

这里有一些您可以在应用程序中使用的代码示例:


class YourModel extends Model
{
    protected $table="your table name in databse";


    public function scopeExpireDateBetween($query, $fromDate, $endDate)
    {
        //i assumed you're using Carbon library
        $created_at_begin_date = $fromDate->minusDate(5);
        $created_at_end_date = $endDate->minusDate(5);
        return $query->whereBetween('created_at', [$created_at_begin_date,$created_at_end_date]);
    }
}

如您所见,我在您的模型中添加了一个范围,您可以从控制器调用您的模型,如下所示。

public function index()
{
   $results= YourModel::expireDateBetween("your expriration begin date", "your expiration end date")->get();
}

您可以在此处查看 laravel 的文档以获取更多信息


推荐阅读