2017-04-10 30 views
2

如何从另一个对象的实例访问用户对象? 我可以访问该项目的用户项目,但不能访问项目的作者LARAVEL 5.4 access其他类的用户obj

此:

$user_id = App\Project::find(1)->user_id; 
$user = App\User::find($user_id); 

返回用户

但这:

$user = App\Project::find(1)->author; 

返回null

预期的行为:获取用户

吨他用户等级:
namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
use Notifiable; 

protected $fillable = [ 
    'name', 'email', 'password' 
]; 

protected $hidden = [ 
    'password', 'remember_token', 
]; 

public function projects() 
{ 
    return $this->hasMany('App\Project'); 
} 
} 

项目类:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Project extends Model 
{ 
protected $fillable = [ 
    'title', 'content' 
]; 

public function category() 
{ 
    return $this->belongsTo('App\Category'); 
} 

public function author() 
{ 
    return $this->belongsTo('App\User'); 
} 
} 
+0

什么返回'App \ Project :: find(1) - > user_id;'null或者一个数字? – dparoli

+0

它返回一个数字 –

+0

我用user()替换了方法author(),现在很好 –

回答

0

在你的项目模型改变这一点:

public function author() 
{ 
    return $this->belongsTo('App\User'); 
} 

这样:

public function author() 
{ 
    return $this->belongsTo('App\User', 'user_id'); 
} 

Laravel搜索了被指定为关系名称pl的外键我们_id,在你的代码中它搜索一个author_id,如果你添加第二个参数,你改变这个搜索user_id