嗨,我是laravel的新手,正在尝试建立一对多关系,我试图从客户那里获得客户名称,并根据订单表中的客户名称订购订单,这是代码
//--customer Model
class customer extends Model {
public function order(){
return $this->hasMany('App'order');
}
}
//-- order Model
class order extends Model {
public function customer(){
return $this->belongsTo('App'customer');
}
}
//--controller
public function searchRecord(){
$customer = customer::all();
return view('orders.searchRecord')->with('customer', $customer);
}
//--View
@foreach($customer as $customer)
{{$customer->customer_name}}<br />
@endforeach
当我使用{{$customer->customer_name}}
时,它会很好地打印所有客户名称,但当我使用{{$customer->order}}
时,它打印订单表的整个json,但如果使用{{$customer->order->order_no}}
,它会给出未定义的错误属性$order_no。
您已将客户->订单关系定义为一对多,这意味着单个客户可以有多个订单customer->order时,您访问的是存储所有客户订单的Collection对象,而不是单个订单。Collection类中没有order_no属性,这就是出现错误的原因。
访问invidual订单的一种方法是,您需要在集合中迭代:
foreach ($customer->order as $order) {
echo $order->order_no;
}