Как отображать записи, основанные на хаммановских отношениях, используя Laravel - PullRequest
0 голосов
/ 23 сентября 2019

Как отобразить всех пользователей в зависимости от статуса подписки, например, сначала отобразить всех премиум-пользователей в списке, затем золото, серебро, бесплатные пользователи и т. Д.

User::with('subscriptions')->get(); // List of all users with subscriptions.

// Users Model
public function subscriptions() 
{
   return $this->hasMany('App\Subscription');
}

// View

@foreach($users as $user)
   {{ $user->name }}

@endoreach

1 Ответ

3 голосов
/ 23 сентября 2019

Не уверен, как у вас настроены ваши таблицы, но это должно работать для вас (используя поле с именем level в подписках):

User::with(['subscriptions' => function($query){
    $query->orderBy('subscriptions.level');
}])->get();

Это должно упорядочиться в соответствии с уровнемподписка.Затем, в своем блэйд-представлении (предполагая какую-то таблицу или что-то в этом роде), вы можете вызвать имя пользователя и затем уровень подписки на основе отношения:

@foreach($users as $user)
 <td>{{ $user->name }}</td>
 <td>
      @foreach($user->subscriptions as $sub)
        {{ $sub->level}}
        {{$loop->last? "":" | "}}
      @endforeach
 </td>
@endforeach

Это один из способов обеспечить несколькоподписки - использование канала между каждым в ячейке таблицы для уровня подписки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...