我有一个项目表和一个供应商表有多对多的关系。供应商会在不同的日期报不同的价格。我如何得到最新的3价格(无论供应商)为每个项目使用雄辩?
项目表
| 身份证|项目代码|项目名称|
| - ------| - ------| - ------|
| 1个|代码1|项目1|
| 第二章|代码2|项目2|
供应商表
| 身份证|供应商代码|供应商_名称|
| - ------| - ------| - ------|
| 1个|供应商1|姓名1|
| 第二章|供应商2|姓名2|
物料_供应商
| 身份证|项目标识|供应商ID|价格|价格_at|
| - ------| - ------| - ------| - ------| - ------|
| 1个|1个|1个|一百|2022年12月1日00时11分22秒|
| 第二章|1个|1个|一百零一|2022年12月2日00时11分22秒|
| 三个|1个|第二章|九十八|2022年12月3日00时11分22秒|
| 四个|1个|1个|九十五|2022年12月4日00时11分22秒|
| 五个|1个|第二章|一百二十|2022年12月5日00时11分22秒|
| 六个|第二章|1个|一百零五|2022年12月6日00时11分22秒|
| 七|第二章|1个|一百|2022年12月7日00时11分22秒|
| 八个|第二章|1个|一百零一|2022年12月8日00时11分22秒|
| 九|第二章|第二章|九十八|2022年12月9日00时11分22秒|
| 十个|第二章|第二章|九十五|2022年12月10日00时11分22秒|
| 十一|1个|1个|一百二十|2022年12月11日00时11分22秒|
| 十二|1个|第二章|一百零五|2022年12月12日00:11:22|
我想得到的是下面这样的
| 项目名称|供应商_名称|价格|价格_at|
| - ------| - ------| - ------| - ------|
| 项目1|姓名2|一百二十|2022年12月5日00时11分22秒|
| 项目1|姓名1|一百二十|2022年12月11日00时11分22秒|
| 项目1|姓名2|一百零五|2022年12月12日00:11:22|
| 项目2|姓名1|一百零一|2022年12月8日00时11分22秒|
| 项目2|姓名2|九十八|2022年12月9日00时11分22秒|
| 项目2|姓名2|九十五|2022年12月10日00时11分22秒|
class Item extends Model
{
public function supplier() {
return $this->belongsToMany(Supplier::class)
->withPivot('price', 'price_at')
->withTimestamps();
}
}
class Supplier extends Model
{
public function item() {
return $this->belongsToMany(Supplier::class)
->withPivot('price', 'price_at')
->withTimestamps();
}
}
尝试下面,但我不知道如何限制它为每个项目3最新的定价
Item::whereKey($this->selectedItems)
->with(['supplier' => function ($q) {
$q->orderBy('price_at','DESC');
}])
->get();
1条答案
按热度按时间4ioopgfo1#
如laravel文档所示,可以使用
take
方法将结果限制为特定的数字。所以我们可以这样做