我有表 users
和 gender
在性别表中有id
和name
(男/女)
users
表中有 gender_id
我需要根据连接的 ID 从用户表中获取 json 数据,并从性别表中获取性别名称。使用当前代码,我得到了正确的 gender_id
,但也得到了所有用户的 gender: null
。如何在 json 中显示性别表中的姓名?
这是我的:
用户模型
public function Gender()
{
return $this->hasOne('App\Gender', 'id');
}
性别模型
public function User()
{
return $this->hasMany('App\User', 'gender_id');
}
Controller
$users = User::with('Gender')->paginate(5);
return response()->json($users);
json 响应
{
"total": 10,
"per_page": 5,
"current_page": 1,
"last_page": 2,
"next_page_url": "http://test.com/user?page=2",
"prev_page_url": null,
"from": 1,
"to": 5,
"data": [
{
"id": 1,
"name": "John",
"surname": "Doe",
"gender_id": 1,
"tel": "987654321",
"email": "john.doe@email.com",
"gender": null
}
]
}
最佳答案
通常,一个用户只有一种性别。这样,您就可以设置一个 gender_id
供以后调用模型。要获取性别,您可能需要将用户表上的性别 ID gender_id
转换为真实模型。所以,belongsTo
应该是正确的。
用户模型
public function Gender()
{
return $this->belongsTo('App\Gender', 'gender_id', 'id);
}
拥有方,以我的逻辑思维,一个性别可以被很多用户拥有,或者它可以有很多用户或者类似的短语。
性别模型
public function Users()
{
return $this->hasMany('App\User', 'gender_id', 'id);
}
为了更好的命名约定,我在方法中添加了额外的 。
关于php - 从具有 Laravel Eloquent 关系的第二个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44057321/