根据用户表[laravel]中的列使用orderBy()订购产品表

Posted

技术标签:

【中文标题】根据用户表[laravel]中的列使用orderBy()订购产品表【英文标题】:Order products table by using orderBy() according to a column in users table [laravel] 【发布时间】: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 在用户模型中 请显示模型关系。 【参考方案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); 

【讨论】:

以上是关于根据用户表[laravel]中的列使用orderBy()订购产品表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Laravel 使用视图中的函数更新数据库中的列

Laravel Eloquent - 使用连接选择列文本类似于其他表中的列文本

使用迁移重命名laravel中的列

如何在 laravel 8 的 pivot_table 中调用其 id 作为 foreign_id 传递的主表中的列?

如何使用laravel中其他表中的列对数据进行排序

如何在laravel中使用逗号分隔值的列上使用'where'