在 "hasOne" 关系中未定义 属性

Undefined property in an "hasOne" relation

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

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

我有两个 tables :

用户:

$table->增量('id'); $table->字符串('email', 50); ...

帐号:

$table->增量('id'); $table->整数('user_id')->无符号();

我有 2 个模型:

用户:

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

帐号:

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

现在我想通过关系得到账户table中的user_id:

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

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

你能帮帮我吗?

提前致谢。

尝试

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

User::find($userId)->Account() 实际上是 return 类型的对象 HasOne,你需要使用 User::find($userId)->Account()->get() 来获取包含实际帐户对象的数组所以 User::find($userId)->Account()->get()[0] 实际上给你 Account 对象。而User::find($userId)->Account->user_id是一个laravelbuild-in自动映射Account对象的特性,所以直接获取Account对象。

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