我在Laravel中遇到问题,我想使用特定的软件包向这些用户展示一些东西吗? 这是现有的代码:
$package = DB::table('users')->where('package_id', '=', '2')->value('*');
这使我带回了所有软件包的所有用户,但我只想让软件包编号为2的用户显示一些东西?
这是对控制器的查询。 在前端,我只是检查了变量。
谢谢大家
答案 0 :(得分:2)
$package = DB::table('users')->where('package_id', '=', '2')->get()
应该足够了。
在这种情况下,我看不到附加value('*')
的优势
答案 1 :(得分:0)
尝试一下...希望它能正常工作
$package = DB::table('users')->select('*')->where('package_id', '=', '2')->get();
答案 2 :(得分:0)
这将我带回所有软件包的所有用户,但我只是 希望用户使用2号包裹
我假设您的意思是您只想让用户使用package_id 2
,而别无其他。
如果是这样,则所需的SQL查询会更难。
请注意,查询和演示基于您提供的很多信息
查询
SELECT
*
FROM
users
WHERE
users.id IN (
SELECT
users.id
FROM
users
GROUP BY
users.id
HAVING
SUM(users.package_id = 2) = 1
AND
COUNT(users.package_id = 2) = 1
)
结果
| id | package_id |
| --- | ---------- |
| 1 | 2 |
| 3 | 2 |
还要注意,此查询假设user_id中的package_id是唯一的。
请参阅demo
答案 3 :(得分:0)
使用DB Facade
$packages = DB::table('users')->where('package_id', '=', '2')->get();
雄辩
$packages = User::where('package_id', '2')->get();
刀片
@if($packages->count() > 0) //or @if(!$packages->isEmpty())
// if part
@else
// else part
@endif
记住get()
方法始终返回集合
first()
方法返回模型的实例
如果您使用的是first()
方法而不是get()
,那么您可以处理类似的事情
控制器
$package = User::where('package_id', '2')->first();
刀片
@if($package) //or @if(!is_null($package))
// code...
@endif