php - 从具有 Laravel Eloquent 关系的第二个表中获取数据

标签 php mysql laravel laravel-5

我有表 usersgender

在性别表中有idname(男/女)

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/

相关文章:

php - 在 Digital Ocean Ubuntu 上设置 Laravel 5.1

Mysql - 检查是否有任何子项指向父项

php - mysql批量处理数据

php - Laravel $request->file() 返回 null

php - htmlspecialchars 不允许换行?

mysql - 按纬度/经度选择位置几乎相同(重复)的地方

javascript - 未呈现 PayPal 支付墙 - 错误 "Invalid approval URL"

Javascript - 计算两个相关字段之间的剩余部分

php - 为什么转储MYSQL表时只有一行显示正确?

php - PDO 支持多个查询(PDO_MYSQL、PDO_MYSQLND)