Laravel 4 - 检索属于另一个表的字段值时的未定义属性

时间:2014-11-16 23:49:39

标签: php laravel

我正在尝试在我的文章(REST)控制器中获取'users'表的'name'字段。 这些是我的模特:

// models/Article.php

class Article extends Eloquent {
    protected $fillable = [];

    protected $table = 'articles';

    public function user(){

    return $this->belongsTo('User','user_id');
    }

    public function upload(){

    return $this->has_one('Upload');
    }
}


// models/User.php

class User extends Eloquent implements UserInterface, RemindableInterface {

    use UserTrait, RemindableTrait;


    protected $fillable = array('email','password','name');

    public function articles(){

    return $this->hasMany('Article','user_id');
    }

    /**
    * Get the unique identifier for the user.
    *
    * @return mixed
    */
    public function getAuthIdentifier()
    {
      return $this->getKey();
    }

    public function getAuthPassword()
    {
      return $this->password;
    }

    public function getReminderEmail()
    {
      return $this->email;
    }

    /**
    * The database table used by the model.
    *
    * @var string
    */
    protected $table = 'users';

    /**
    * The attributes excluded from the model's JSON form.
    *
    * @var array
    */
    protected $hidden = array('password', 'remember_token');
}



// controllers/ArticlesController.php

class ArticlesController extends \BaseController {
    public function index() // GET (all)
    {
        $articles =  Article::all();
        foreach ($articles as $article) {
            // ** ERROR ** Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$id
            var_dump("title: ".$article->titulo." | user: ".$article->user()->id .' | email: '.$article->user()->email );
        }
    }

    // other functions [....]
}

那么......我怎样才能正确地从'用户'表中获取字段?我一直在Laravel doc和这个网站上搜索...我还没有找到错误:(

我已经在迁移文件上设置了数据库关系,并且我已经检查了mysql数据库关系图,一切正常。

1 个答案:

答案 0 :(得分:0)

您是否正确检查了钥匙? belongsTo的第二个参数应该是本地密钥,而hasMany的第二个参数是外键。