【问题标题】:laravel eloquent with in with select return nulllaravel 雄辩与 in 选择返回 null
【发布时间】:2017-11-27 01:03:59
【问题描述】:

我用 laravel eloquent 处理关系,我有一个问题。

这些是我雄辩的模型;

class Post extends BaseModel
{

    public function user()
    {
        return $this->belongsTo(User::class, 'user_id', 'id');
    }

}


class User extends BaseModel 
{

    public function userInfo()
    {
       return $this->hasOne(UserInfo::class,'user_id','id');
    }
}


class UserInfo extends BaseModel
{


}

当我使用以下代码时,user_info 为空。

$posts = Post::with(['user' => function ($query) {
    $query->with(['userInfo' => function ($query) {
        $query->select(['nickname','avatar']);
    }]);
}])->paginate(10)
    ->toArray();

当我请求它时,结果是

{
    "id": 10,
    "community_id": 1,
    "title": "biaoti",
    "desc": null,
    "content": "abc",
    "user_id": 1,
    "user": {
        "id": 1,
        "mobile_phone": "13800000003",
        "user_info": null
    }
}

但是下面的代码是正常的。

$posts = Post::with(['user' => function ($query) {
    $query->with(['userInfo' => function ($query) {
        // $query->select(['nickname','avatar']);
    }]);
}])->paginate(10)
    ->toArray();

当我请求它时,结果是:

{
    "id": 10,
    "community_id": 1,
    "title": "biaoti",
    "desc": null,
    "content": "abc",
    "user_id": 1,
    "user": {
        "id": 1,
        "mobile_phone": "13800000003",
        "user_info": {
            "id": 1,
            "user_id": 1,
            "nickname": "devkang",
            "avatar": "",
            "birthday": "1989-01-30",
            "sex": 1,
            "identity": 1,
            "region_id": 1
        }
    }
}

你能帮帮我吗?我不知道怎么用,我想从user_info中选择一些字段。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    发生这种情况是因为您在使用 select 方法时排除了 user_id 外键。要修复它,请将外键添加到列表中:

    $query->select(['nickname', 'avatar', 'user_id']);
    

    【讨论】:

    • 这是我第三次忘记这个并花了一个小时调试。
    猜你喜欢
    • 2020-02-18
    • 2018-06-27
    • 1970-01-01
    • 2023-01-27
    • 2021-05-23
    • 2020-02-17
    • 2018-04-11
    • 2020-07-29
    • 1970-01-01
    相关资源
    最近更新 更多