Laravel:有没有更智能的方法只返回用户记录,而不是在每个查询中过滤它们

时间:2017-05-21 15:12:47

标签: php laravel eloquent

在我的Laravel应用程序中,我有以下型号:
用户,业务,简介,订阅。
用户将拥有一个企业,企业将拥有一个配置文件和许多订阅。

在我的Subscription控制器中,我用来下载登录用户订阅的许多方法都要求我添加如下内容:

Subscription::where('business_id', '=', Auth::user()->business->id)->active()->get();

在一个查询中,这可能不是问题,但我有很多方法可以提取业务订阅记录,并且想知道是否有更智能的方法来获取业务记录,同时还为查询添加了额外的范围。 / p>

2 个答案:

答案 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();