我在Laravel中查询一些数据时遇到了一些麻烦。
我开始执行以下操作的查询:
$query = User::whereRole('advertiser');
当我查询例如$usersall = $query->whereHave_pics('1')->get();
时
然后我也会在have_pics
$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)
答案 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