订单表
id total created_at
---+------------+--------------
2 1500.99 2017-02-02
项目表
id order_id product_id quant
---+-----------+------------+-------
66 2 5 1
67 2 6 2
68 3 5 2
产品表
id name created_at
---+------------+--------------
5 PC Intel 2017-02-02
6 PC AMD 2017-02-02
模型
//Order Model
class Order extends Model{
public function items(){
return $this->hasMany('App\Item');
}
}
// Item Model
class Item extends Model{
public function producto(){
return $this->hasOne('App\Product');
}
}
// Product Model
class Product extends Model{
public function item(){
return $this->hasOne('App\Item');
}
}
我想显示关系模型的产品名称。例如,我有
$order = Order::with('items')->find($id);
但是如何为产品的打印名称添加第三个模型?例如,打印此
$order->items->product->name //"PC Intel"
答案 0 :(得分:1)
$order->items
返回一个集合。您无法访问属性。
相反,您必须循环遍历集合中的所有对象
foreach($order->items as $item) {
$item->product->name;
}
也许您应该将产品添加到您的预期加载
order = Order::with('items.producto')->find($id);
答案 1 :(得分:0)
根据您的表格,项目应该是这样的:
// Item Model
class Item extends Model{
public function product(){
return $this->belongsTo('App\Product');
}
public function order(){
return $this->belongsTo('App\Order');
}
}
对于检索产品名称,您应该知道items()会返回一个集合,所以:
$order->items[0]->product->name //"PC Intel"