为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 中,如何让银行先拥有高数量的分行,然后再获得低数量的分行

在 Laravel 中,如何让银行先拥有高数量的分行,然后再获得低数量的分行

PHP
青春有我 2023-06-24 18:29:16
我正在使用 Laravel Relation 列出我的银行分行和所有此设置的层次结构如下国家--有很多->银行--有很多->分行。 $country = Country::where("iso2",  $this->app->request->route()->parameter('country'))->first();这是国家/地区模型中银行的关系代码:public function banks(){    return $this->hasMany(Bank::class);}以及银行模型中的分行关系代码 public function branches(){    return $this->hasMany(Branch::class);}现在我的动机是我只想让这个国家的 15 家银行可验证,但条件是拥有大量分支机构的银行将在列表中名列前茅。您能为我提供任何带有 Laravel 雄辩查询的简单解决方案吗?这对我来说将是一个很大的帮助。
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

大家好,我使用 withCount 来解决这个问题,这是我的解决方案查询

 $banks = Bank::where('country_id', $country->id)->withCount('branches')->having('branches_count', '>', 0)->orderBy('branches_count', 'DESC')->take(15)->get()->toArray();



查看完整回答
反对 回复 2023-06-24
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

尝试这个:


$banks = Bank::with(['branches'])

->map(function ($bank) {

    $bank->num_branches = $bank->branches->count();

    $bank;

})

->sortByDesc('num_branches')

->take(15);


查看完整回答
反对 回复 2023-06-24
  • 2 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信