Laravel Eloquent所有人都有关系

时间:2014-01-13 13:15:26

标签: laravel relationship eloquent

如何从Laravel中的关系中获取表中的所有数据?

所以,我有这样的表:

*users*
id
username
password
...

*address*
id
address
user_id
...

如果我用Address :: all()调用我的雄辩模型,我会得到user_id的响应,并且我想建立获取用户名的关系。

我尝试添加:

public function users(){
  return $this->belongsTo('Users', 'user_id');
}

并使用Address::with('users')->get()致电,但回复为空。

3 个答案:

答案 0 :(得分:6)

您的用户类是{@ 1}}还是Users?除非您覆盖它,否则Eloquent处理名称的默认方式可以在文档(source)中找到:

  

请注意,我们没有告诉Eloquent我们的用户模型使用哪个表。除非明确指定了其他名称,否则该类的小写复数名称将用作表名。因此,在这种情况下,Eloquent将假定User模型将记录存储在users表中。您可以通过在模型上定义表属性来指定自定义表

所以我相信如果你将地址模型中的代码更改为:

User

它会有用,因为我们已将public function users(){ return $this->belongsTo('User', 'user_id'); } 更改为Users

答案 1 :(得分:0)

替代方式!

 class Users extends Model {
   //override table
   protected $table = 'users';
   protected $primaryKey = 'id';
   //Your other code here
 }

并在地址模型中添加如下

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

答案 2 :(得分:0)

您需要更改

public function users(){
   return $this->belongsTo('Users', 'user_id');
}

public function users(){
    return $this->hasOne(Users::class, 'user_id');
}

public function users(){
    return $this->hasMany(Users::class, 'user_id');
}