with 加载, SQL是whereIn,会自动进行排序,如何使用 ORM 可以实现 leftjoin 的效果?

使用 leftJoin 可以实现查询的结果

$donorDetails = DonorDetail::query()
 ->where('user_id', 15578)
 ->leftJoin('projects', 'donor_details.project_id', '=', 'projects.id')
 ->orderBy('projects.created_at', 'desc')
 ->orderBy('donor_details.created_at', 'desc')
 ->get();

使用ORM with查询,projects 的数据不能正常排序。

$donorDetails = DonorDetail::query()
            ->where('user_id', 15578)
            ->with(['relationProject' => function (Builder $query) {
                $query->select(['id', 'name', 'type', 'created_at'])->orderBy('created_at', 'desc');
            }])
            ->orderBy('created_at', 'desc')
            ->get();

如何使用 ORM 可以实现 leftjoin 的效果?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2
    $donorDetails = DonorDetail::query()
        ->orderByDesc(
            Project::select('created_at')
                ->whereColumn('donor_details.project_id', 'projects.id')
                ->orderByDesc('created_at')
                ->limit(1)
        )
        ->where('user_id', 15578)
        ->with(['relationProject' => function (Builder $query) {
            $query->select(['id', 'name', 'type', 'created_at'])->orderBy('created_at', 'desc');
        }])
        ->orderBy('created_at', 'desc')
        ->get();

参考:快速入门《Laravel 9 中文文档》

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!