3

我有一个用户。用户创建了许多广告。我想通过分页显示的广告查看用户详细信息。为此,我制作了两个模型(用户和广告)

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 循环时显示用户的详细信息。但我不想要这个。那么,如何通过广告的分页获取用户的详细信息?

4

1 回答 1

1

我认为你过于复杂了。你有两个模型。在用户中,你可以把这个关系:

public function ads(){
    return $this->hasMany(App\Ad, 'user_id', 'id');
}

在 Ads 模型中,您提出了以下关系:

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.
于 2019-04-13T13:45:54.627 回答