【发布时间】:2022-08-19 05:35:22
【问题描述】:
我的应用程序(Laravel)中有以下模型:
class City extends Model {
public function travels(){
return $this->belongsToMany(\'App\\models\\Travel\');
}
public function hotels(){
return $this->hasMany(\'App\\models\\Hotel\');
}
}
class Travel extends Model {
public function cities(){
return $this->belongsToMany(\'App\\models\\City\');
}
public function deals()
{
return $this->morphMany(\'App\\models\\Deal\', \'dealable\');
}
}
class Hotel extends Model {
public function city(){
return $this->belongsTo(\'App\\models\\City\');
}
public function deals()
{
return $this->morphMany(\'App\\models\\Deal\', \'dealable\');
}
}
class Deal extends Model {
public function dealable()
{
return $this->morphTo();
}
}
我有以下表格布局:
城市:
- 标识
- 名称
旅行:
- 标识
- 说明
city_travel:
- 标识
- city_id
- travel_id
酒店:
- 标识
- 名称
- city_id
交易:
- 标识
- dealable_id
- dealable_type
现在我想显示所有城市的名称以及有交易的旅行数量+有交易的酒店数量 (我不仅想要只有旅行或酒店的城市,而且这些旅行或酒店必须有优惠)
例如我们有:
纽约市和 :
- Hotel 01 => 这家酒店有 3 优惠
- Hotel 02 => 这家酒店有 1 笔交易
- Travel 001 => 这家酒店有 1 笔交易
- Travel 002 => 此商品无优惠
所以结果将是: 纽约市 => 5 笔优惠
我希望我已经很好地解释了我的需求。
谢谢你的帮助!
-
我不确定这是否是你需要的,但你实际上可以做
travels.deals。
标签: laravel laravel-5 eloquent eloquent-relationship