laravel 中的关系 eloquent?
Relationship eloquent in laravel?
在user
中:
public function posts()
{
return $this->hasMany(Post::class);
}
在post
中:
public function users()
{
return $this->belongsTo(Users::class);
}
我在控制器中处理:
$user = Users::find('1')->posts;
然后我得到一个数组,返回的结果正是我需要的。
但是当我因为需要获取大量数据而这样查询时,结果是一个空数组。我做错了什么?
在UserController.php
中:
$listUser = Users::with('posts')
->select('name', 'title')
->where('type', 1)
->get(); // It returns posts as an empty array
请给我任何意见。
您的关系是使用主键开发的,在您的查询中您缺少获取值的 id
。
$listUser = Users::with('posts')
->select('users.id', 'users.name', 'posts.title')
->where('posts.type', 1)
->get();
你必须 select foreign key
在 posts
:
$listUser = Users::select(['id', 'name'])
->with(['posts' => function($query) {
$query->select(['user_id','title']);
}])
->where('type', 1)
->get();
或
$result = User::select(['id', 'name'])
->with(['posts:user_id, title'])
->get();
如果您只想 select 相关模型的某些字段,您可以在 with
子句中指定它,如下所示。 select 子句适用于 User
查询生成器。
$listUser = Users::with('posts:user_id, title')
->select('name')
->where('type', 1)
->get();
在user
中:
public function posts()
{
return $this->hasMany(Post::class);
}
在post
中:
public function users()
{
return $this->belongsTo(Users::class);
}
我在控制器中处理:
$user = Users::find('1')->posts;
然后我得到一个数组,返回的结果正是我需要的。
但是当我因为需要获取大量数据而这样查询时,结果是一个空数组。我做错了什么?
在UserController.php
中:
$listUser = Users::with('posts')
->select('name', 'title')
->where('type', 1)
->get(); // It returns posts as an empty array
请给我任何意见。
您的关系是使用主键开发的,在您的查询中您缺少获取值的 id
。
$listUser = Users::with('posts')
->select('users.id', 'users.name', 'posts.title')
->where('posts.type', 1)
->get();
你必须 select foreign key
在 posts
:
$listUser = Users::select(['id', 'name'])
->with(['posts' => function($query) {
$query->select(['user_id','title']);
}])
->where('type', 1)
->get();
或
$result = User::select(['id', 'name'])
->with(['posts:user_id, title'])
->get();
如果您只想 select 相关模型的某些字段,您可以在 with
子句中指定它,如下所示。 select 子句适用于 User
查询生成器。
$listUser = Users::with('posts:user_id, title')
->select('name')
->where('type', 1)
->get();