我有一个表单,我的用户可以设置条件来搜索他们的客户数据库,但是我很难将查询整合到一起(在laravel5.7中工作)。
目前客户可以设置的标准如下:
与x次访问相比,客户的访问量“正好多|少”
客户首次访问比x天“准确地多|少”
客户上一次访问比x天“准确地多|少”
客户提供商是“facebook | twitter | email | any”
我现在正试着弄清楚如何将它构建成一个查询,我甚至不能给出一个具体的例子!我的障碍似乎是检查第一个记录和最后一个记录,以确保它符合标准。
sqlfiddle:http://sqlfiddle.com/#!9/68407/1
我的table:
| id | name | email | provider | created_at
---------------------------------------------------------------------------------------
| 1 | Mr Smith | mr.smith@example.com | facebook | 2018-11-01 09:00:00 |
| 2 | Mrs Smith | mrs.smith@example.com | facebook | 2018-11-01 09:00:00 |
| 3 | Miss Smith | miss.smith@example.com | email | 2018-11-01 09:00:00 |
| 4 | Doctor Smith | doctor.smith@example.com | email | 2018-11-01 09:00:00 |
| 5 | Lord Smith | lord.smith@example.com | twitter | 2018-11-01 09:00:00 |
| 6 | Lady Smith | lady.smith@example.com | email | 2018-11-01 09:00:00 |
| 7 | Mr Smith | mr.smith@example.com | facebook | 2018-11-02 09:00:00 |
| 8 | Mrs Smith | mrs.smith@example.com | facebook | 2018-11-02 09:00:00 |
| 9 | Doctor Smith | doctor.smith@example.com | email | 2018-11-02 09:00:00 |
| 10 | Lord Smith | lord.smith@example.com | twitter | 2018-11-02 09:00:00 |
| 11 | Lady Smith | lady.smith@example.com | email | 2018-11-02 09:00:00 |
| 12 | Mr Smith | mr.smith@example.com | facebook | 2018-11-03 09:00:00 |
| 13 | Mrs Smith | mrs.smith@example.com | facebook | 2018-11-03 09:00:00 |
| 14 | Miss Smith | miss.smith@example.com | email | 2018-11-03 09:00:00 |
| 15 | Lord Smith | ord.smith@example.com | twitter | 2018-11-03 09:00:00 |
| 16 | Lady Smith | lady.smith@example.com | email | 2018-11-03 09:00:00 |
查询的客户条件示例:
访问次数超过2次的客户
客户首次访问是在2天前
客户上次访问是在1天前
客户提供商是facebook
当前查询:
$Customers = Customer::groupBy('email')
->havingRaw('COUNT(*) > 2’)
->where('created_at', '<', Carbon::now()->subDays(2)->toDateTimeString())
->get();
我不知道如何拉第一个客户记录检查它是否超过2天,然后拉最后一个记录,并确保它超过1天。我知道我当前的查询对于我想要实现的目标来说是完全无用的,但是我再一次努力地把它拉到一起。
预期结果:
| id | name | email | provider | created_at
---------------------------------------------------------------------------------------
| 12 | Mr Smith | mr.smith@example.com | facebook | 2018-11-03 09:00:00 |
| 13 | Mrs Smith | mrs.smith@example.com | facebook | 2018-11-03 09:00:00 |
2条答案
按热度按时间jv4diomz1#
用mysql方言进行选择的sql查询如下
可以翻译成这样一个雄辩的问题
vhipe2zx2#
您要查找的查询是:
假设当前时间为2018-10-04 09:00:00。
雄辩地说:
另一方面,使用雄辩的方法可以链接方法,如下所示