如何在Laravel 5.5中从DB Json值比较和获取数据

时间:2018-10-08 07:10:45

标签: php laravel-5

我是Laravel新手。如果日期与磨碎机上的当前日期匹配,那么我想根据日期进行比较并获取数据,然后根据获取结果设置当前日期和分页。

'[\"28-09-2018\"]'
'[\"27-08-2018\",\"15-10-2018\",\"23-10-2018\"]'
'[\"27-11-2018\",\"15-12-2018\",\"23-12-2018\"]'

这是我的SQL:

INSERT INTO `events` (`id`,  `title`, `organizer_name`, `email`, `number`, `alternate_number`, `event_category`, `event_dates`, `start_time`, `end_time`, `venue`, `long`, `lat`, `entry_fee`, `description`, `is_paid`, `is_activity`, `is_active`, `deleted_at`, `created_at`, `updated_at`) VALUES
(1,  'Test', 'Demo', 'msworldqueen@gmail.com', '9818043775', NULL, '12', '[\"28-09-2018\"]', '22:45:00', '23:00:00', 'Rajasthan 313001, India', '73.7124790', '24.5854450', '{\"Normal\":\"1000\"}', 'asdfasdfasdf', 1, '0', 1, NULL, '2018-08-27 00:31:37', '2018-08-27 00:31:37'),
(2,  'teststestse', 'sadfdsfa', 'admin@ngf.com', '999999999', '99999999', '0', '[\"27-08-2018\",\"15-10-2018\",\"23-10-2018\"]', '13:09:00', '12:09:00', 'slougia tastour 9014, Testour, Tunisia', '9.4422664', '36.5499000', NULL, 'test', 0, '0', 1, NULL, '2018-09-15 04:57:21', '2018-09-15 04:58:16');
(3,  'tesede,o', 'sadfdsfa', 'admin@ngf.com', '999999999', '99999999', '0', '[\"27-11-2018\",\"15-12-2018\",\"23-12-2018\"]', '13:09:00', '12:09:00', 'slougia tastour 9014, Testour, Tunisia', '9.4422664', '36.5499000', NULL, 'test', 0, '0', 1, NULL, '2018-09-15 04:57:21', '2018-09-15 04:58:16');

我尝试

 $curdate = date('d-m-Y');

    $events = Event::where('event_dates', '!=',  '')
                ->where(function ($query) use ($curdate) {

                    $query->whereRaw(
                        'JSON_CONTAINS(event_dates, '>=', $curdate)'
                    );
                    /*$query->whereRaw(
                        'JSON_CONTAINS(event_dates, \'["' . $curdate . '"]\')'
                    );*/

                    /*foreach (event_dates as $id) {
                        $query->orWhereRaw(
                            'JSON_CONTAINS(event_dates, \'["' . event_dates . '"]\')'
                        );
                    }*/

                    return $query;
                })->paginate(3);

1 个答案:

答案 0 :(得分:0)

我认为kerbholz评论是最优雅的解决方案。

我想的是:

数组中的第一个转换事件集合:

$events = Event::where('event_dates', '!=',  '')->get()->toArray()

在数组中转换json

$arrayOfDates = json_decode($event_dates, false);

现在您可以使用2个数组。

希望有帮助。