我有三个表:客户,订单和帐簿。订单存储客户ID和图书存储订单ID。
要在客户页面上列出订单商品,我将此方法添加到客户模型中:
public function customerOrders()
{
return $this->hasMany('App\Order', 'id_customer');
}
很好。
现在,我需要为每个订单抓书。因此,我将此方法添加到订单模型中:
public function orderBooks()
{
return $this->hasMany('App\OrderBooks', 'id_order');
}
当我尝试在循环中获取orderBooks信息时:
@foreach($customer->customerOrders as $order)
...
{{ $order->orderBooks->id }}
...
Laravel返回
此集合实例上不存在属性[id]。
我如何发送数据以查看:
return view('register.customers.show', compact('customer'));
迁移:
Schema::create('customers', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
Schema::create('orders', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('id_customer')->nullable();
$table->foreign('id_customer')->references('id')->on('customers')->onDelete('set null');
$table->timestamps();
});
Schema::create('books', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('id_order')->nullable();
$table->foreign('id_order')->references('id')->on('orders')->onDelete('set null');
$table->timestamps();
});
答案 0 :(得分:2)
尝试一下:
Page_Load
答案 1 :(得分:0)
此错误:
此集合实例上不存在属性[id]。
之所以发生,是因为您正试图从集合中获取id
,而您希望从集合中的对象中获取id
尝试以下方法:
@foreach($customer->customerOrders->orderBooks as $book)
{{ $book->id }}
@endforeach