Laravel красноречивый вызов нумерации страниц в реляционной базе данных - PullRequest
3 голосов
/ 13 апреля 2019

У меня есть пользователь. Пользователь создает много объявлений. Я хочу видеть информацию о пользователях с объявлениями, где реклама показывается paginate. Для этого я делаю две модели (User & Ads)

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. Но я не хочу этого. Итак, как я могу получить данные пользователя с нумерацией объявлений?

1 Ответ

1 голос
/ 13 апреля 2019

Я думаю, вы слишком усложняете.У вас есть две модели.В User вы можете поместить это отношение:

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.
...