为什么laravel不返回特定ID的标识

时间:2019-03-21 12:20:00

标签: php mysql laravel

我在Laravel中遇到问题,我想使用特定的软件包向这些用户展示一些东西吗? 这是现有的代码:

$package = DB::table('users')->where('package_id', '=', '2')->value('*');

这使我带回了所有软件包的所有用户,但我只想让软件包编号为2的用户显示一些东西?

这是对控制器的查询。 在前端,我只是检查了变量。

谢谢大家

4 个答案:

答案 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