1

I have an Eloquent model named Auction and it has cars in a one-to-many relationship. This is the function for retrieving the cars:

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

The car model is created and in the car table very row has a auction_id value. However, the function does not seem to work, when I do

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

I get as output:

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

Shouldn't there be something?

$auction->cars

also returns null by the way.

1 Answer 1

7

Relations are not loaded until called unless eager loading is used, so that's why relations comes up empty. As for cars being null, if you'd like to paste the rest of your model and the full output of var_dump($auction) that would likely be helpful for debugging (as an aside, it should be Auction::find(1), since the ID is an integer). We are also available for help in #laravel on freenode.

Sign up to request clarification or add additional context in comments.

4 Comments

Do you realy need eager loading? I reported a bug for this on github.com/laravel/framework/issues/1362
Nope, I believe you misread my reply. I said "Relations are not loaded until called unless eager loading is used", because relations are lazily loaded. This means that the "relations" property would be empty on load unless you have it eager loaded. Once you call the relationship it will be loaded and then be visible in the "relations" property.
JackPoint, please come into #laravel if you're having issues with this like you have in your open issue. This is likely a bug in your configuration, since the same code will work for myself and others.
It had to be an integer in the find method, thanks for pointing that out!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.