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 (将#修改为@)