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

我正在使用 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 雄辩查询的简单解决方案吗?这对我来说将是一个很大的帮助。


青春有我
浏览 75回答 2
2回答

GCT1015

大家好,我使用 withCount 来解决这个问题,这是我的解决方案查询 $banks = Bank::where('country_id', $country->id)->withCount('branches')->having('branches_count', '>', 0)->orderBy('branches_count', 'DESC')->take(15)->get()->toArray();

慕码人2483693

尝试这个:$banks = Bank::with(['branches'])->map(function ($bank) {    $bank->num_branches = $bank->branches->count();    $bank;})->sortByDesc('num_branches')->take(15);
打开App,查看更多内容
随时随地看视频慕课网APP