微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel 中相关模型的自然排序

如何解决Laravel 中相关模型的自然排序

我有一个 Laravel 项目,它使用 vueJs 作为前端,我需要在那里自然地对相关模型进行排序。所以:

我有一个项目模型,它与规划模型具有hasMany关系。 我正在项目的展示页面显示所有计划。我需要按标题自然地对页面上的计划进行排序。

目前我的代码看起来像这样(我找到了排序解决方here):

项目控制器:

public function show(Project $project)
    {
        if (auth()->user()->id == $project->user_id || auth()->user()->hasPermissionTo('edit_users')) {
            return New ProjectResource($project->load(['plannings' => function ($query) {
                                                $query->orderByRaw('LENGTH(title)','ASC')
                                                    ->orderBy('title','ASC');
                                                }]));
        } else {
            return response()->json(['message' => 'Kein Zugriff'],403);
        }

    }

项目资源:

public function toArray($request)
    {
        return [
            'id' => $this->id,'title' => $this->title,'user_id' => $this->user_id,'plannings' => PlanningResource::collection($this->whenLoaded('plannings')),];
    }

这适用于这样的标题 (数组已经是排序结果的顺序了)

$plannings = [
  'Project #1','Project #2','Project #10','Project #11','Project Room 1 #1','Project Room 1 #2','Project Room 1 #11'
];

但是,对于这样的标题,它不起作用: (数组已经是排序结果的顺序了)

$plannings = [
  'Gang 7 - 8m x 2m LPH 2,5m 300LUX','Gang 8 - 5m x 2m LPH 2,'Gang 1 - 13m x 2m LPH 2,'Gang 3 - 13m x 2m LPH 2,'Gang 4 - 19m x 2m LPH 2,'Gang 5 - 17m x 2m LPH 2,'Gang 6 - 19m x 2m LPH 2,'Gang 2 - 13m x 2m LPH 2,5m 300LUX #2'
];

所以我在想,也许我可以使用收集方法sortBy('key',SORT_NATURAL,true)

但是,我不知道如何在我的 ProjectControllerProjectResource 中实现它。有人知道解决方案吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。