提问者:小点点

用户表和状态表之间的Laravel雄辩关系,状态id在用户表中


我正试图弄清楚拉雷维尔的关系,我已经走到了尽头,所以我想我会在这里发布我的第一个问题,希望能弄清楚。我通常可以在这里找到答案,但这次不行。

我有这样的用户表:

  • id
  • first_name
  • last_name(等)
  • address_1(等)
  • state_id
  • 城市(等)

然后我有一张状态表

  • id

现在,从我收集的信息来看,Elount希望用户id存储在states表中,而不是存储在users表中的states\u id,但这没有意义,因为您必须反复重复这些状态。

在我的用户模型上,我已经尝试过了

public function state()
{
    return $this->belongsTo(State::class);
}

public function state()
{
    return $this->hasOne(State::class);
}

但是我认为它在状态表上寻找外键,而不是用户表。我错过了什么?

我想获得一个所有用户的列表,例如在ShowUserDetails视图中,不需要第二次查询就可以获得他们的状态,从而将所有状态放入一个数组,并从该数组中获取他们的状态。

喜欢

$users = User::with('state')->get();

共1个答案

匿名用户

如果我真的明白你想要什么,你真的必须通过添加第二个参数来更新用户类中的状态方法。

public function state()
{
    return $this->belongsTo(State::class, 'states_id'); // if the column name in your users migration is state_id then you might not need the second param. 
}

然后,您可以获得与具有状态关系的用户

$users = User::with('state')->get();

我添加了states_id作为第二个参数,因为这是您在迁移中提供的列名