Laravel eloquent 关系数据库中的分页调用
Laravel eloquent pagination call in relational database
我有一个用户。用户创建了许多 ads.I 想要查看带有广告的用户详细信息,其中广告按分页显示。为此,我制作了两个模型(用户和广告)
public function user(){
return $this->hasOne(User::class, 'id', 'user_id');
}
public function ads(){
return $this->hasMany(Ads::class, 'user_id', 'id');
}
在控制器中我这样调用:
$users = Ads::with(['user'=> function ($q) use ($id){
$q->where('id',$id);
}])->paginate(2);
但是这里会在调用 forelse 循环时显示用户的详细信息。但我不想要这个。
那么,如何通过广告分页获取用户的详细信息?
我认为你过于复杂了。
你有两个模型。
在User中,你可以把这个关系:
public function ads(){
return $this->hasMany(App\Ad, 'user_id', 'id');
}
在广告模型中,你把这个关系:
public function user(){
return $this->belongsTo(App\User, 'id', 'user_id');
}
在你的控制器中,你可以像这样简单地调用:
//If you want a list of User's Ads
$user = User::find(1);
$userAds = $user->ads()->paginate(2); //you paginate because can be many
//If you want the details from a user who made the Ad #1
$ad = Ad::find(1);
$user = $ad->user; //Don't need paginate because is only one.
我有一个用户。用户创建了许多 ads.I 想要查看带有广告的用户详细信息,其中广告按分页显示。为此,我制作了两个模型(用户和广告)
public function user(){
return $this->hasOne(User::class, 'id', 'user_id');
}
public function ads(){
return $this->hasMany(Ads::class, 'user_id', 'id');
}
在控制器中我这样调用:
$users = Ads::with(['user'=> function ($q) use ($id){
$q->where('id',$id);
}])->paginate(2);
但是这里会在调用 forelse 循环时显示用户的详细信息。但我不想要这个。 那么,如何通过广告分页获取用户的详细信息?
我认为你过于复杂了。 你有两个模型。 在User中,你可以把这个关系:
public function ads(){
return $this->hasMany(App\Ad, 'user_id', 'id');
}
在广告模型中,你把这个关系:
public function user(){
return $this->belongsTo(App\User, 'id', 'user_id');
}
在你的控制器中,你可以像这样简单地调用:
//If you want a list of User's Ads
$user = User::find(1);
$userAds = $user->ads()->paginate(2); //you paginate because can be many
//If you want the details from a user who made the Ad #1
$ad = Ad::find(1);
$user = $ad->user; //Don't need paginate because is only one.