Php 选择Laravel Eloquent上组的最后一行
我有三张桌子: 商店Php 选择Laravel Eloquent上组的最后一行,php,sql,laravel,eloquent,Php,Sql,Laravel,Eloquent,我有三张桌子: 商店 |-id |-名字 产品 |-id |-名称 价格 |-id |-值 |-产品标识 |-门店标识 |-在 正如您所见,我们在多家商店中都有相同的产品,每家商店都有自己的价格(当价格更新以维护历史记录时,会创建一个新记录) 我的问题是: A) 我想显示某一产品在所有商店的当前价格表 B) 我想显示所有产品的列表和最便宜的价格,以及有此价格的商店名称 如何在Laravel 5.6的雄辩版上实现这一点?这将帮助您编写查询: A. select st.name,pd.nam
|-id
|-名字 产品
|-id
|-名称
价格
|-id
|-值
|-产品标识
|-门店标识
|-在
正如您所见,我们在多家商店中都有相同的产品,每家商店都有自己的价格(当价格更新以维护历史记录时,会创建一个新记录) 我的问题是:
A) 我想显示某一产品在所有商店的当前价格表
B) 我想显示所有产品的列表和最便宜的价格,以及有此价格的商店名称
如何在Laravel 5.6的雄辩版上实现这一点?这将帮助您编写查询:
A. select st.name,pd.name, pr.value from prices pr
left join products pd on pd.id = pr.product_id
left join stores st on st.id = pr.store_id
B. select st.name,pd.name, min(pr.value) as price from prices pr
left join products pd on pd.id = pr.product_id
left join stores st on st.id = pr.store_id group by st.name,pd.name
使用雄辩的方法获取关系数据是一种简单的方法 1) 价格(属于产品和商店) 2) 产品(有很多价格) 3) 商店(有很多价格) 1) Price.php
<?php
namespace App\Models;
use Eloquent;
class Price extends Eloquent{
protected $table = 'prices';
public function store()
{
return $this->belongsTo('App\Models\Store');
}
public function product()
{
return $this->belongsTo('App\Models\Product');
}
}
我希望你能帮助这一点。使用此关系:
class Product extends Model
{
public function stores()
{
return $this->belongsToMany(Store::class, 'prices')->withPivot('value');
}
}
(A)
(B)
@我的回答是否有用
<?php
namespace App\Models;
use Eloquent;
class Store extends Eloquent
{
protected $table = "stores";
public function prices()
{
return $this->hasMany('App\Models\Store');
}
}
$price = \App\Models\Price::with(['store','product'])->groupby(['store.name','product.name'])->get();
$price->store->name;
class Product extends Model
{
public function stores()
{
return $this->belongsToMany(Store::class, 'prices')->withPivot('value');
}
}
foreach($product->stores as $store) {
$price = $store->pivot->value;
}
$products = Product::with('stores')->get();
foreach($products as $product) {
$cheapestStore = $product->stores->sortBy('pivot.value')->first();
$price = $cheapestStore->pivot->value;
}