我有一个视图,显示特定会议的详细信息(名称,描述,价格等)。
显示我使用的每个信息:{{$conf->name}}, {{$conf->descrption}}, etc.
但就价格而言,会议没有价格。每个会议可以有许多注册类型。每种注册类型都有特定的价格。
价格是RegistrationType表的一列,而不是会议桌。
在会议详细信息视图中,我想显示价格范围,例如,如果会议有3种注册类型,其中一种注册类型的最低价格为“0”,最大值为“10”我想要在视图中显示该会议的注册类型范围,即“0-10”。
但是我不明白在视图中可以显示特定会议的注册类型的范围价格的过程是什么?您知道吗?
会议模型和RegistrationType模型如下:
会议模式:
class Event extends Model
{
// A conference has many registration types
public function registrationTypes(){
return $this->hasMany('App\RegistrationType', 'conference_id');
}
}
RegistrationType型号:
class RegistrationType extends Model
{
public function conference(){
return $this->belongsTo('App\Conference');
}
}
答案 0 :(得分:1)
我会这样做(假设Event实际上是你的Conference类):
class Conference extends Model
{
protected $appends = ['price_range'];
public function registrationTypes(){
return $this->hasMany('App\RegistrationType', 'conference_id');
}
public function getPriceRangeAttribute() {
return $this->registrationTypes()->get()->min('price') . ' - ' . $this->registrationTypes()->get()->max('price');
/* The first answer :
* return $this->registrationTypes()->min('price') . ' - ' . $this->registrationTypes()->max('price');
* should also do it, and could even be better, because no
* other results than the actual min and max are returned,
* no collection fetched ! */
}
}
在这里,您可以向Laravel告知<{>}会议的每个实例的{{3>} price_range 属性。 getPriceRangeAttribute appends返回 price_range 属性,该属性检查链接的每个registrationType的价格列中找到的最小值和最大值(由hasMany关系返回)到你的会议。
答案 1 :(得分:0)
示例代码如下:
class Event extends Model
{
public function registrationTypes(){
return $this->hasMany('App\RegistrationType', 'conference_id');
}
public function priceRangeAttribute() {
$registrationTypes = $this->registrationTypes();
return $this->orderPriceRanges($registrationTypes);
}
private function orderPriceRanges($registrationTypes) {
// process the collection and format the different prices (0, 2, 10)
// into a price range like 0-10
}
}
然后您可以像$ conf-&gt; price_range一样访问它。