2013-05-22 56 views
1

我有一个叫做Auction的Eloquent模型,它有一对一关系的汽车。这是用于检索汽车的功能:Laravel 4 hasMany does not work

public function cars() 
{ 
    return $this->hasMany('Car'); 
} 

创建的汽车模型,并在车表很行都有一个auction_id值。然而,该功能似乎并没有工作,当我做

$auction = Auction::find('1'); 
var_dump($auction); 

我得到的输出:

protected 'relations' => 
array (size=0) 
    empty 

不应该有什么?

$auction->cars 

也顺便返回null。

回答

7

直到被调用才会加载关系,除非使用热切加载,所以这就是为什么关系空了。至于汽车为空,如果您想粘贴模型的其余部分以及var_dump($auction)的完整输出,这可能对调试有帮助(作为旁白,应该是Auction::find(1),因为ID是整数)。我们也可以在freenode的#laravel上寻求帮助。

+0

你是否真的需要急切的加载?我在https://github.com/laravel/framework/issues/1362 – JackPoint

+0

上报告了这个错误,我相信你误解了我的回复。我说:“除非使用急切的加载,否则直到被调用才加载关系”,因为关系是延迟加载的。这意味着“关系”属性在载入时将是空的,除非你有急切的加载。一旦你调用关系,它将被加载,然后在“关系”属性中可见。 – machuga

+0

JackPoint,请进入#laravel,如果您遇到问题,比如您在公开问题中遇到问题。这可能是您的配置中的一个错误,因为相同的代码将适用于我自己和其他人。 – machuga