【发布时间】:2013-09-19 04:00:01
【问题描述】:
我正在尝试在 laravel 4 中改进我的应用程序中的一些代码,并尝试实现模型之间的关系。
我有一个名为 reservations 的表,它与项目具有一对多的关系。项目与产品具有一对一的关系。基本上作为预订,预订中包含的项目被添加到项目表中。商品的规格来自产品表(类型、价值等)
我在模型中设置了如下关系:
在预订类中:
public function item() {
return $this->hasMany('Item');
}
在物品类中:
public function reservation() {
return $this->belongsTo('Reservation');
}
public function product() {
return $this->hasOne('Product');
}
在产品类中:
public function item() {
return $this->belongsTo('item');
}
我现在正在尝试查询日历视图的预订。我正在使用以下方法检索一个月内的所有预订:
$events = Reservation::where('play_date','>=',$start->format('Y-m-d'))
->where('play_date','<=', $end->format('Y-m-d'))
->get();
然后我尝试使用以下方法遍历集合(是集合还是结果集?):
$events->each(function($event) { }
然后我想遍历预订的所有项目,正是这一点让我感到困惑。
$items = $event->item()->get();
它确实创建了一个对象,然后我可以使用另一个回调遍历这个子集合,但是我正在努力使用以下方法获取产品信息:
$item->product()->type
我收到一个错误:
Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$type
如何使用 laravel 关系正确地遍历项目?这方面的最佳做法是什么,并从产品表中检索与该项目相关的详细信息
谢谢
【问题讨论】:
-
我不确定,但看起来您在这里尝试做的是预订和产品之间的多对多关系。
-
可能是这种情况。我不是100%。基本上,项目表存储每个预订所包含项目的详细信息以及一些相关字段,例如产品的会话开始和结束 - 我正在学习。