Php 比较数据库中日期格式为Y-m的两个字符串的Laravel查询

Php 比较数据库中日期格式为Y-m的两个字符串的Laravel查询,php,mysql,laravel,datepicker,eloquent,Php,Mysql,Laravel,Datepicker,Eloquent,因此,我的数据库中有一个表。在这个表中,我有一个json类型的列设置。 我在里面为每家公司存储信用卡。它看起来是这样的:settings->credit_cards[[0]=>{到期日:{年:“17”,月:“04”}] 我有两个日期选择器,从中我可以在php中获得两个类似这样的日期:“2017-04”。 我试图做的是返回信用卡在给定期限内到期的公司,如下所示(这显然不起作用-它只是忽略我的查询并返回所有公司): if($key==“到期日->日期自”&&&$value){ $companys=$

因此,我的数据库中有一个表。在这个表中,我有一个json类型的列设置。 我在里面为每家公司存储信用卡。它看起来是这样的:
settings->credit_cards[[0]=>{到期日:{年:“17”,月:“04”}]
我有两个日期选择器,从中我可以在php中获得两个类似这样的日期:
“2017-04”
。 我试图做的是返回信用卡在给定期限内到期的公司,如下所示(这显然不起作用-它只是忽略我的查询并返回所有公司):

if($key==“到期日->日期自”&&&$value){
$companys=$companys->where(“设置->信用卡->到期日”,'>=',$value);
}
如果($key==“到期日->日期”&&&$value){

$companys=$companys->where(“设置->信用卡->到期日“,”您可以在日期和月份中创建部分价值,并与where中的收尾进行比较

if ($key == "expiration_date->date_from" && $value) {
    $parts = explode('-', $value);
    $companies = $companies->where(function($q) use($parts){
        // either year is greater or year is same and month is same or greater
        $q->where("settings->credit_cards->expiration_date->year", '>', $parts[0])
            ->orWhere(function($q) use($parts){
                $q->where("settings->credit_cards->expiration_date->month", '>=', $parts[1])
                    ->where("settings->credit_cards->expiration_date->year", '=', $parts[0]);
            });
    });
}

同样,date_也可以进行筛选,您可以在date和month中创建部分价值,并与where for ex中的收尾进行比较

if ($key == "expiration_date->date_from" && $value) {
    $parts = explode('-', $value);
    $companies = $companies->where(function($q) use($parts){
        // either year is greater or year is same and month is same or greater
        $q->where("settings->credit_cards->expiration_date->year", '>', $parts[0])
            ->orWhere(function($q) use($parts){
                $q->where("settings->credit_cards->expiration_date->month", '>=', $parts[1])
                    ->where("settings->credit_cards->expiration_date->year", '=', $parts[0]);
            });
    });
}

date_to filter也一样。在这个表中,我有一个object类型的列设置。如果MySQL中没有json类型的object,我的朋友可能会看看这个链接:。特别是:“仅仅因为你可以存储json…你不应该这样做。”为什么不将过期日期存储为UNIX时间戳呢?很抱歉,这是他们构建此项目数据库的方式。我刚开始此项目,必须使用此结构。我无法将其保存为UNIX时间戳,因为他们在该项目的其他位置使用这些日期,使用的格式是他们当前保存的格式。在这个表中,我有a列设置为object类型。假设MySQL中没有json类型的type对象,我的朋友可能会看一下这个链接:。特别是:“仅仅因为你可以存储json…这不符合你应该做的。”为什么不将过期日期存储为UNIX时间戳呢?很抱歉,这是他们构建此项目数据库的方式。我刚开始此项目,必须使用此结构。我无法将其保存为UNIX时间戳,因为他们在该项目的其他位置使用这些日期,使用的格式是他们当前保存的格式。