“hasOne”关系中的未定义属性

时间:2016-02-10 10:02:38

标签: laravel-4 eloquent one-to-one

我尝试了很多可能性,但我总是遇到同样的错误。

也许你应该帮助我...希望如此!我正在研究Laravel 4.2

我有两张桌子:

用户:

$表 - >增量( 'ID');  $ table-> string('email',50); ...

帐号:

$表 - >增量( 'ID');  $表 - >整数( 'USER_ID') - >无符号();

我有2个型号:

用户:

public function account()
    {
        return $this->hasOne('Account', 'id','user_id');
    }

帐户:

public function user()
    {
        return $this->belongsTo('User', 'id');
    }

现在我希望通过以下关系获取帐户表中的user_id:

$userId = Auth::id();
$account = User::find($userId)->Account()->user_id;

我收到此错误:ErrorException 未定义属性:Illuminate \ Database \ Eloquent \ Relations \ HasOne :: $ user_id

你能帮帮我吗?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

User :: find($ userId) - > Account()实际上返回一个HasOne类型的对象,你需要使用User :: find($ userId) - > Account() - > get()来获取一个包含实际Account对象的数组,以便User :: find($ userId) - > Account() - > get()[0]实际上获取Account对象。和User :: find($ userId) - > Account-> user_id是一个laravel buildin功能,可自动映射Account对象,因此您可以直接获取Account对象。

答案 1 :(得分:0)

尝试

$account = User::find($userId)->Account->user_id;

答案 2 :(得分:0)

如果User::find($userId)->account无效,请检查getAccountAttribute()是否不存在。