2017-04-12 73 views
0

我有一个Booking模型,它可以有很多Service's。Laravel一对多模型关系不起作用

我已经定义的预订模型的关系是这样的:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use App\Service; 

class Booking extends Model 
{ 

    /** 
    * Get the services for the booking. 
    */ 
    public function services() 
    { 
     return $this->hasMany('App\Service'); 
    } 
} 

然后在我BookingController我试图让所有的服务,这样目前的预订:

public function create() 
    {  
     $services = Booking::find(1)->services; 
     return view('bookings.create'); 
    } 

我一直得到的错误:

Trying to get property of non-object

不知道我在做什么错在这里。外键关系全部设好。在services表中,我有booking_id列,它在bookings表上引用id

任何帮助,将不胜感激。

+0

你已经导入了Booking类,你确定你的数据库中有记录 –

+1

'find'可以返回'null'。是否存在带有id = 1的预订? – lagbox

+0

@lagbox嗯,我认为这是问题。没有id = 1的预订。我试着用预订ID存在,它的工作。如果你写这个作为答案,我会高兴地接受它。 – user3574492

回答

1

在这种特殊情况下的问题是,可能是雄辩无法找到id == 1预订。

Booking::find(1);将在预订主键上查询1。如果没有找到,它将返回null。试图使用该null作为对象是给“试图获取非对象的属性”错误。

0

如果你的钥匙是不是由laravel模型,你可以尝试指定它们产生的:

return $this->hasMany('App\Service', 'foreign_key', 'local_key'); 
0
public function create() 
    {  
     $services = Booking::find(1)->services; 
     return view('bookings.create'); 
    } 

看到你的上面的代码:确保你有记录ID为1 ..如果是,请检查你的主键和外键。