gpt4 book ai didi

php - Laravel:Order By hasMany 关系的第一个(最旧的)条目

转载 作者:行者123 更新时间:2023-11-30 22:31:19 26 4
gpt4 key购买 nike

我有以下表格:


产品
编号 |标题
-- | --------------
1 |第一个产品
2 |第二个产品
3 |第三个产品



产品版本
编号 |产品编号 |发布日期
-- | ---------- | --------------
1 | 1 | 2013-01-01
2 | 1 | 2014-01-01
3 | 1 | 2015-03-01
4 | 2 | 2013-02-02
5 | 2 | 2014-02-02
6 | 2 | 2015-02-02
7 | 3 | 2013-03-03
8 | 3 | 2014-03-03
9 | 3 | 2015-03-03


关系

Product->hasMany("ProductVersion")

ProductVersion->belongsTo("Product")


我想要做的是选择所有产品并按第一个(最旧的)product_version.release_date 订购。

或者最好按发布日期对 product_versions 排序,按 addon_id 分组,然后加入产品表?

我已经搜索并搜索了一个解决方案,并且有几个几乎可以解决的问题。我想知道是否有一种简单的方法可以使用 Laravel 执行此操作。

最佳答案

您可以为此使用联接。加入两个表,按 id 分组,按最新日期排序,我将其别名为“latest_release_date”:

$products = Product::selectRaw('products.*, MAX(product_versions.release_date) as latest_release_date')
->leftJoin('product_versions', 'product_versions.product_id', '=', 'products.id')
->orderBy('latest_release_date', 'DESC')
->groupBy('products.id')
->get();

您提到了按 addon_id 分组,但它没有显示在您的表格示例中的任何地方,所以我只使用了您提供的表格示例中的名称。

关于php - Laravel:Order By hasMany 关系的第一个(最旧的)条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33829520/

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