Select 在 Laravel 中有一个
Select with hasOne in Laravel
我有三个模型
Posts
Users
UserImages
在我的帖子中
public function user() {
return $this->belongsTo(new User)->with('avatar');
}
在用户中我有
public function avatar() {
return $this->hasOne(UserImage::class)->where('type', 1); //type 1 is avatar;
}
我从 Posts controller 调用,我有下面的截图:
$posts = $this->model::select('*')->with('user')->get();
returns 信息量太大了。我想要 select 像这样的
hasOne 和 belongsTo 可以吗?
您可以加入预先加载查询以获得想要的结果:
$posts = $this->model::select('*')->with(['user'=>function($query) {
$query->join('avatars', 'avatars.user_id', 'users.id')
->select(['users.id', 'users.name', 'users.userName', 'avatars.images_url']);
}])->get();
要使用 'avatar' 关系,您可以使用多重预加载:
$posts = $this->model::select('*')->with(['user'=>function($query) {
$query->select(['users.id', 'users.name', 'users.userName'])
->with(['avatar'=>function($query){
$query->select(['user_id','images_url']);
}]);
我有三个模型
Posts
Users
UserImages
在我的帖子中
public function user() {
return $this->belongsTo(new User)->with('avatar');
}
在用户中我有
public function avatar() {
return $this->hasOne(UserImage::class)->where('type', 1); //type 1 is avatar;
}
我从 Posts controller 调用,我有下面的截图:
$posts = $this->model::select('*')->with('user')->get();
returns 信息量太大了。我想要 select 像这样的
hasOne 和 belongsTo 可以吗?
您可以加入预先加载查询以获得想要的结果:
$posts = $this->model::select('*')->with(['user'=>function($query) {
$query->join('avatars', 'avatars.user_id', 'users.id')
->select(['users.id', 'users.name', 'users.userName', 'avatars.images_url']);
}])->get();
要使用 'avatar' 关系,您可以使用多重预加载:
$posts = $this->model::select('*')->with(['user'=>function($query) {
$query->select(['users.id', 'users.name', 'users.userName'])
->with(['avatar'=>function($query){
$query->select(['user_id','images_url']);
}]);