嗨,我有一个复杂的问题。我和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个价格表相关联。
我希望用户在他所属的价格表中获得最便宜的价格
我希望这是可以理解的,我不知道如何处理它,如果你可以帮助我,我会很高兴,谢谢!
为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);