在雄辩的laravel 5.1中无法建立多种关系

时间:2015-12-21 20:09:40

标签: php laravel laravel-5 eloquent laravel-5.1

您好我是laravel的新手,并尝试建立一对多的关系,我试图从客户获取客户名称,order_no与订单表中的客户名称,这里是代码

//--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。

1 个答案:

答案 0 :(得分:0)

您已将客户 - >订单关系定义为一对多,这意味着单个客户可以拥有多个订单。因此,当您访问 $ customer-&gt;订单时,您正在访问存储所有客户订单的集合对象,而不是单个订单。 集合类中没有 order_no 属性,这就是您收到错误的原因。

访问订单的一种方法,您需要遍历集合:

foreach ($customer->order as $order) {
  echo $order->order_no;
}
相关问题