根据用户表[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 Eloquent - 使用连接选择列文本类似于其他表中的列文本