You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询父模型Article时如何对关联的article_blocks应用相同排序规则

实现方式有两种,可根据你的使用场景选择:


方案1:仅在当前查询中临时生效

如果你只需要在getArticle这个查询里对关联的article_blocks排序,直接在with方法中给对应关联绑定自定义查询闭包即可,修改后代码如下:

public static function getArticle($id) {
    return Article::where('id', $id)
        ->with([
            'blog_categories',
            'article_recommendations',
            'article_blocks' => function ($query) {
                $query->orderBy('order', 'ASC');
            },
            'article_comments'
        ])
        ->first();
}

方案2:全局关联默认排序(更推荐)

如果你希望所有调用Article和ArticleBlock关联的场景,都默认按order升序返回结果,直接修改Article模型中定义article_blocks关联的方法,加上排序规则即可:

// App\Models\Article.php 中对应的关联方法
public function article_blocks()
{
    return $this->hasMany(ArticleBlock::class)->orderBy('order', 'ASC');
}

修改后你原本的getArticle方法不需要做任何调整,关联返回的article_blocks会自动应用排序规则,也和你单独写的getArticleBlocks排序逻辑完全一致,避免后续重复编写排序代码。


内容的提问来源于stack exchange,提问作者user17428261

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:06:11