【问题标题】:Order products table by using orderBy() according to a column in users table [laravel]根据用户表[laravel]中的列使用orderBy()订购产品表
【发布时间】:2019-12-29 13:09:36
【问题描述】:

我在数据库产品和用户中有两个表

我有这个 SQL 查询

Product::where('status',5)
   ->where('user_id',120)
   ->orderBy('created_at','DESC')
   ->paginate(50)   

我在 USERS 表中有一个名为 valid_rate 的列

我只需要通过 users 表中的 valid_rate 列来订购这些产品

像那样 Product::where('status',5)->orderBy('valid_rate','DESC')->get();

【问题讨论】:

  • 产品模型和用户模型之间有什么关系?您将如何按用户表上的列对 产品 进行排序 - 您是否要按有效比率对与该产品相关的用户进行排序?
  • 我想按有效费率列按该用户订购产品?
  • 如果有 one 用户,并且 valid_rate 在该用户上,我不明白您如何按用户模型上的列排序。如果有效汇率在产品或数据透视表上(用户 + 有效汇率),这可能会起作用。我可能不明白,对不起。
  • valid_rat 在用户模型中
  • 请显示模型关系。

标签: php laravel laravel-5 eloquent


【解决方案1】:
Product::with('user')->where('status',5)
   ->where('user_id',120)
   ->orderBy('created_at','DESC')
   ->paginate(50);

如果你和雄辩关系 laravel 的用户有产品关系

【讨论】:

    【解决方案2】:

    首先根据用户 ID 连接两个表。

    你的代码会是这样的

    //join users table with product  
    //replace (products) with product table name
    Product::join('users', 'users.id', '=', 'products.user_id') 
        ->where('products.status',5)
        ->where('products.user_id',120)
        ->orderBy('users.valid_rate','DESC')
        ->paginate(50)
    

    【讨论】:

      【解决方案3】:

      试试这个

      Product::with('users')->where('status',5)
         ->where('user_id',120)
         ->orderBy('valid_rate','DESC')
         ->paginate(50); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-07
        • 2013-12-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-03
        • 2017-10-18
        • 2021-10-09
        相关资源
        最近更新 更多