Laravel中的最大查询步骤数

时间:2017-02-05 19:15:58

标签: laravel

我在Laravel中查询一些数据时遇到了一些麻烦。

我开始执行以下操作的查询:

$query = User::whereRole('advertiser'); 

当我查询例如$usersall = $query->whereHave_pics('1')->get();时 然后我也会在have_pics

中获得0的用户

$query可以包含一长串where个查询,这些查询是动态的,具体取决于用户的选择。其中一些where查询,has_pics中有0的用户确实符合条件,但是当我用whereHave_pics('1')结束查询时,我不应该只获得{1中'为'1'的用户{1}}?

我想知道的是,如果laravel可以在查询构建器中处理最多步骤吗?

例如,如果我在查询开头的whereHave_pics('1'),就像这样:

Have_pics

然后它完全忽略$query = User::whereRole('advertiser')->whereHave_pics('1'); /* More queries are added */ $usersall = $query->get(); 而不是whereHave_pics ...... 如果我在查询结束时这样做:

whereRole

然后它依赖于也创建查询的用户选择。

我一直在尝试大量不同的工作,例如更改查询模型,例如而不是$query = User::whereRole('advertiser'); /* More queries are added */ $usersall = $query->whereHave_pics('1')->get(); 我已完成whereHave_pics('1')where('have_pics', '1')等。

我不知道下一步该尝试什么。

这是查询用户的完整功能

where('have_pics', true)

1 个答案:

答案 0 :(得分:1)

问题是你需要了解在Laravel中链接和/或链接的工作方式。

当您说$query->where(..a..)->orWhere(..b..)->where(..c..)->orWhere(..d..)时,它会评估为:(a || (b && c) || d)。您可能打算((a || b) && (c || d))或有意((a && c) || b || d)。这就是为什么当你需要高级where子句时,使用闭包和parameter grouping