【问题标题】:按关系属性排序的分页 Laravel 表
【发布时间】:2022-01-22 05:58:58
【问题描述】:

假设我有这样一个结构:

城市:

  • 身份证
  • 姓名
  • 属于(国家)

国家:

  • 身份证
  • 姓名

如何获得按国家/地区名称排序的分页城市列表?

我是怎么看的:

$res = City::query()->join('countries', 'country_id', '=', 'countries.id')->orderBy('countries.name')->paginate($records_per_page, ['*'], 'page', $page_number);

$res = City::query()->with('country')->orderBy('country.name')->paginate($records_per_page, ['*'], 'page', $page_number);

我也看到了在得到查询结果后对集合进行排序的解决方案,但我认为分页时会更糟。

什么是正确的方法?

【问题讨论】:

    标签: laravel sorting eloquent laravel-pagination laravel-relations


    【解决方案1】:

    我认为这应该可以解决您的问题。

    我假设您所属的国家列是城市表中的 country_id:

    $res = City::query()->select("*",
                \DB::raw('(SELECT name FROM countries WHERE countries.id = cities.country_id) as countryname'))
                ->orderBy('countryname', 'DESC')
                ->paginate($records_per_page, ['*'], 'page', $page_number);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 2021-10-10
      • 1970-01-01
      • 2015-06-10
      • 2018-01-07
      • 1970-01-01
      • 2013-10-14
      相关资源
      最近更新 更多