php - 从数据透视表中获取数据
问题描述
我有两个带有数据透视表的表
表用户
编号 | 姓名 | 电子邮件
餐桌饮品
编号 | 姓名 | 价格
数据透视表user_drinks
编号 | 用户 ID | 饮料ID | 数量 | 价格 | 地位
饮料模型
public function users()
{
return $this->belongsToMany('App\User', 'user_drinks', 'drink_id', 'user_id')->withPivot('price', 'quantity')->withTimestamps();
}
用户模型
public function drinks()
{
return $this->belongsToMany('App\Drink', 'user_drinks', 'drink_id', 'user_id')->withPivot('price', 'quantity')->withTimestamps();
}
我想从数据透视表中获取购买饮料的最新用户以及价格和数量,例如
名为 John 的用户 1 以 50 美元的价格购买了 2 杯咖啡
名为 Jane 的用户 2 以 75 美元的价格购买了 3 杯咖啡
解决方案
将此关系用于用户模型
public function drinks()
{
return $this->belongsToMany(Drink::class, 'user_drinks')->withPivot(['quantity', 'price','status'])->withTimestamps();
}
为拿到它,为实现它:
$user = User::with(['drinks' => function ($q) {
$q->orderBy('created_at', 'desc');
}])->orderByDesc('drinks.created_at')->get();
推荐阅读
- javascript - 嵌入式 Edge 下的 jQuery Ajax 404(Office 任务窗格)
- c++ - 如何使用 CMake 在 macOS 上链接 fftw3?
- python - 即使安装成功,Raspberry Pi 也找不到 Tesseract
- python - 我试图在 odoo 中安装一个新模块但发生错误,AttributeError: 'str' object has no attribute 'setdefault'
- google-cloud-platform - FlexRs=SPEED_OPTIMIZED 在 Dataflow 中的作用是什么?
- apache-spark - 在 Pyspark 中管理多个数据框
- docker - Docker更改命名卷的位置
- reactjs - 如何在 ant design 崩溃中更改图标(Accordian)
- javascript - 基于重复属性删除数组元素
- php - Symfony & Panther:Panther 不加载 - 无法创建 PantherClient()