首页 > 解决方案 > 如何使用 Laravel 显示基于 hasmany 关系的记录

问题描述

如何根据订阅状态显示所有用户,比如在列表中首先显示所有高级用户,然后显示黄金、白银、免费用户等?

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

标签: phpmysqllaraveleloquent

解决方案


不确定您是如何设置表格的,但这应该适合您(使用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

这是提供多个订阅的一种方法 - 在订阅级别的表格单元格中的每个订阅之间使用管道


推荐阅读