gpt4 book ai didi

php - Laravel Mysql 查询选择条件

转载 作者:行者123 更新时间:2023-11-30 22:07:57 25 4
gpt4 key购买 nike

我有两个表如下:

1).网址

    id    domain             created_at
------------------------------------------------
1 google.com 2016-11-30 00:00:00
2 test.com 2016-11-29 00:00:00
3 example.com 2016-11-26 00:00:00

等等2).链接

     id  urls_id   end_date              created_at            status
---------------------------------------------------------------------------
1 2 2016-11-30 00:00:00 2016-11-30 00:00:00 Approved
2 2 2016-12-01 00:00:00 2016-11-30 00:00:00 Approved
3 2 NULL 2016-11-30 00:00:00 Approved
4 2 2017-01-01 00:00:00 2016-12-01 00:00:00 Approved
5 2 2016-01-01 00:00:00 2016-12-01 00:00:00 Pending
6 3 2016-11-24 00:00:00 2016-12-01 00:00:00 Pending
7 3 2016-01-01 00:00:00 2016-12-01 00:00:00 Approved
8 3 NUll 2016-12-02 00:00:00 Pending
9 3 2016-01-08 00:00:00 2016-12-01 00:00:00 Approved
10 3 NUll 2016-12-02 00:00:00 Pending

我想编写一个 MYSQL 查询以返回这些条件:每个域一行 遵循这些条件:

1). end_date NOT NULL  AND
2). end_date > Carbon::now() (I am using carbon) not expired AND
3). status is "Approved" AND
4). return latest end_date closer to present or now.

因此,例如,它将查找并找到所有“urls_id”= 2 并选择所有状态已批准并查找 end_date 不是 NULL 且未过期,但由于有一个 Null 那么它不会返回它,然后继续到 "urls_id"= 3 并且我们有 2 个已获批准并且都已过期并且没有 end_date NULL 或未过期所以我们只会返回最新的 end_date 的那一行

这是一个输出

  id     domain          end_date_max        
------------------------------
9 example.com 2016-01-08 00:00:00

我们如何在一个 SQL 查询中做到这一点?在 Laravel 中或只是简单的原始查询

谢谢

最佳答案

Laravel 提供了一个非常好的 Active Record 类,所以你可以在没有像这样的原始查询的情况下做到这一点:

$result = DB::table('urls')
->leftJoin('links', 'urls.id', '=', 'links.urls_id')
->whereNotNull('links.end_date')
->where('links.end_date','>', Carbon::now())
->where('links.status','Approved')
->orderBy('links.end_date','DESC')
->groupBy('urls.domain')
->get();

像这样的东西应该可以解决问题,我没有测试代码所以我希望它能工作。

关于php - Laravel Mysql 查询选择条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41049230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com