用户表和状态表之间的Laravel雄辩的关系,用户表中具有states_id

问题描述 投票:0回答:1

我试图弄清laravel中的关系,并且已经走到了尽头,所以我想我将在这里提出我的第一个问题,希望能弄清楚。我通常可以在这里找到答案,但是这次没有。

我的用户表如下:

  • id
  • 名字
  • 姓氏(等)
  • 地址_1(等)
  • states_id
  • 城市(等)

然后我有一个状态表

  • id
  • state_abrv
  • 州名

现在,从我的收集中,Eloquent希望将状态表中存储的users_id而不是用户表中存储的States_id,但这没有任何意义,因为您必须一遍又一遍地重复这些状态。

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

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

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

但是我认为它正在状态表而不是用户表上寻找外键。我在这里想念什么?

例如,我想在显示用户详细信息视图中获取所有用户的列表及其状态,而无需第二次查询就可以将所有状态都放入一个数组并从该数组中获取他们的状态。

$users = User::with('state')->get();
php laravel eloquent
1个回答
0
投票

如果我真的了解您想要的,您实际上必须通过添加第二个参数来更新用户类中的状态方法。

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作为第二个参数,因为这是您提供的列名。

© www.soinside.com 2019 - 2024. All rights reserved.