在我的Laravel应用程序中,我有以下型号:
用户,业务,简介,订阅。
用户将拥有一个企业,企业将拥有一个配置文件和许多订阅。
在我的Subscription控制器中,我用来下载登录用户订阅的许多方法都要求我添加如下内容:
Subscription::where('business_id', '=', Auth::user()->business->id)->active()->get();
在一个查询中,这可能不是问题,但我有很多方法可以提取业务订阅记录,并且想知道是否有更智能的方法来获取业务记录,同时还为查询添加了额外的范围。 / p>
答案 0 :(得分:0)
假设您在Subscription和Business之间存在Laravel关系,您可以像这样重写此查询:
$subs = Auth::user()->business->subscriptions()->active()->get();
->subscriptions()
部分将返回一个查询,您可以在其上链接其他范围。
答案 1 :(得分:0)
如果您的关系设置正确,那么您可以执行以下操作之一。
$subscriptions = auth()->user()->business()->subscriptions()->active()->get();
$subscriptions = Subscription::whereHas('business', function ($query) {
$query->where('user_id', auth()->id());
})->active()->get();