gpt4 book ai didi

laravel Eloquent 与 in with select 返回 null

转载 作者:行者123 更新时间:2023-12-05 00:14:13 25 4
gpt4 key购买 nike

我使用 laravel eloquent 与关系,我有一个问题。

这些是我 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中选择一些字段。

最佳答案

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

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

关于laravel Eloquent 与 in with select 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47498696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com