嗨,我有一个复杂的问题。 我和Laravel在一起只工作了一周。 然后,我尝试为客户建立价格表。
我有5张桌子:
price_lists:
id
title
---------------------------
price_lists_products:
id
product_id
price_lists_id
price
percent
---------------------------
price_lists_users:
id
user_id
price_lists_id
---------------------------
products:
id
title
price
---------------------------
users:
id
name
我必须像这样将它们放在一起:
有一些价目表
每个价目表都与产品+价格相关
每个用户最多可以关联5个价目表
在产品视图和列表中,我需要向用户显示价格表中为其设置的最便宜价格的产品
例如:
我有一本书,它属于5个不同的价目表,每个价目表都具有不同的价格。
并且有一个用户与3个价目表相关。
我希望用户从他所属的价目表中获得最便宜的价格
我希望这是可以理解的,我不知道该如何处理,如果您能帮助我,我会很高兴,谢谢!
答案 0 :(得分:0)
为Product
,PriceList
和User
创建模型。
在您的Product
模型中,创建多对多关系以获取相关的PriceList
集合:
public function pricelists()
{
return $this->belongsToMany('App\PriceList')->withPivot('price', 'percent');
}
在您的PriceList
模型中,创建多对多关系以获取相关的User
集合:
public function users()
{
return $this->belongsToMany('App\User');
}
再次使用Product
模型,您可以像这样获得最便宜的价格:
// get the cheapest listing by user_id, you can set default to logged in user
public function cheapestprice($user_id){
$this->pricelists->whereHas('users', function ($query) {
$query->where('user_id', $user_id);
})->orderBy('price_lists_products.price','ASC')->first()->price;
}
最后,使用Product对象,您可以获得最便宜的价格:
Product::first()->cheapestprice(Auth::user()->id);