【问题标题】:Get user info from another table in laravel从 laravel 的另一个表中获取用户信息
【发布时间】:2017-07-31 10:29:55
【问题描述】:

我有Order 表,其中用户订单将与他们的id 一起存储,并且还有0 / 1 的状态以显示该订单是否由用户支付。

现在我想在他们的个人资料中显示,例如,他们有 10 个订单和 3 个已付款。

我可以获得 10 个总订单数,但我无法获得已支付的这 3 个订单的数量。

目前我有这个:

$ordersd = DB::table('orders')->where('status', Auth::user()->username)->pluck('status')->count();

但这不是我需要的,因为我需要指定 count 对我来说只有状态为 1 的订单属于已登录用户。

我该怎么做?

谢谢。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    你为什么在 where 条件下比较 statusAuth::user()->username

    这有意义吗?

    $ordersd = DB::table('orders')->where('status', Auth::user()->username)
                   ->pluck('status')->count();
    

    所以,改成

    $ordersd = DB::table('orders')
                ->where('user_id',Auth::user()->id)
                ->where('status', 1)
                ->count();
    

    希望你能理解。

    【讨论】:

    • 我明白兄弟,但它不起作用,为什么?因为它将为所有用户返回状态 1!我只想获取那些属于登录用户的列。
    • 我需要说的是只为登录用户而不是所有用户返回此状态。
    • @RobertNicjoo 您如何跟踪哪些订单属于哪些用户? Orders 表中是否有用户 ID 或名称字段?
    • @RobertNicjoo 我已经更新了我的答案,请尝试最新的答案。
    • 您真的需要pluck() 电话吗?由于您只需要计数,因此当数据库可以为您计数并将数字发送给您时,您不需要检索与查询匹配的所有行。
    【解决方案2】:

    您应该能够这样做以获取已付款订单的计数:

    $ordersd = DB::table('orders')
                 ->where([ [ 'status', '=', 1 ], 
                           [ 'user_id', '=', Auth::user()->id]
                        ])
                 ->count();
    

    获取订单总数:

    $ordersd = DB::table('orders')
                 ->where('user_id', Auth::user()->id)
                 ->count();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多