Pergunta

Really sorry to bother you all, but I have a noob question concerning some code in a Laravel 4 Tutorial:

In this tutorial, we have to manage relationships between multiple tables. Here is the models codes:

<?php
class Auteur extends Eloquent
{
    public $timestamps = false;
    public function livres()
    {
        return $this ->hasMany('Livre');
    }
}

The other model:

<?php
class Livre extends Eloquent
{
    public $timestamps = false;
    public function auteur()
    {
         return $this ->belongsTo('Auteur');
    }
}

And when I call :

Route::any('DynEloquent',function()
{
    foreach(Livre::with('auteur')->get() as $livre)
    echo '"'.$livre->titre.'" a été écrit par '.$livre->auteur->nom.'<br>';
});

I have an ErrorException:Trying to get property of non-object apparently on $livre->auteur->nom.

Any help will be much appreciated since I've already tried to find my way in the official docs and other stuff like the similar questions on eloquent relationship. (even if I'm pretty sure I'm missing an easy thing)(Forgive my English since I'm french.)

Thanks.

Table auteurs: -id -nom -prenom -naissance

Table livres: -id -titre -auteur_id

Foi útil?

Solução

It looks like that your relation $livre->auteur is not returning any data, it's probably null, which is not an object and then you get the message Trying to get property of non-object. To be sure you can do:

Route::any('DynEloquent',function()
{
    foreach(Livre::with('auteur')->get() as $livre)
    {
       dd( $livre->auteur );
    }
});

You have to check tour relations, if they are really pointed to the correct $tables and your database table, to see if they are correctly filled with proper relational data.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top