Laravel在同一个面板中获取多个对象

时间:2015-08-29 09:55:03

标签: php laravel-4

我试图获取申请表中的员工名单。

所以现在我得到了这个观点:

@foreach($getteam as $team)

 <!-- Begin row -->
  <div class="panel-group col-sm-offset-1 col-sm-10">
    <div class="panel panel-default">
      <div class="panel-heading">
        <h3 class="panel-title">{{ $team->role->name }}</h3>
      </div>
      <div class="panel-body">
        <ul class="list-group">
          <li class="list-group-item">
            <img src="{{ Config::get('app.url') }}/public/img/avatar.jpg" style="float:left;margin-right:15px;padding-bottom:5px;" class="img-circle" alt="{{ $team->username }}" width="75" height="75">
            <h4 style="color:{{ $team->role->colour }};">{{ $team->username }}</h4>
            <p>Een klein beetje info over wie ik ben enzo... :p</p>
          </li>
        </ul>

      </div>
    </div>
</div>
  <!-- End row -->
@endforeach

使用此查询:

SELECT * FROM `user`
INNER JOIN `role` ON `user`.`role_id` = `role`.`id`
WHERE `role_id` >= '4'
ORDER BY `role`.`id` DESC

User::with('Role')
    ->join('role', 'user.role_id', '=', 'role.id')
    ->where('role_id', '>=', '4')
    ->orderBy('role.id', 'DESC')
    ->get();

现在,非常好,

这样可以让用户得到这样的结果: http://prntscr.com/8a6v60

那是我想要的。

这就是我想要的:http://prntscr.com/8a6vgo

因此,当组相同时,它们必须位于相同的UL

修改 这是我现在的观点:

<!-- Begin row -->
<div class="panel-group col-sm-offset-1 col-sm-10">
  @foreach($roles as $role)
    <div class="panel panel-default">
      <div class="panel-heading">
        <h3 class="panel-title">{{ $role->name }}</h3>
      </div>
      <div class="panel-body">
        <ul class="list-group">

          @foreach($role->user() as $user)
            <li class="list-group-item">
              <img src="{{ Config::get('app.url') }}/public/img/avatar.jpg" style="float:left;margin-right:15px;padding-bottom:5px;" class="img-circle" alt="{{ $user->username }}" width="75" height="75">
              <h4 style="color:{{ $role->colour }};">{{ $user->username }}</h4>
              <p>Een klein beetje info over wie ik ben enzo... :p</p>
            </li>
          @endforeach

        </ul>

      </div>
    </div>
  @endforeach
</div>
<!-- End row -->

这是控制器:

public function ForumTeam()
    {
        $roles = Role::all();
        $getTeam = User::with('Role')->join('role', 'user.role_id', '=', 'role.id')->where('role_id', '>=', '4')->orderBy('role.id', 'DESC')->get();
        return View::make('team')->with('getteam', $getTeam)->with('roles', $roles);
    }

这是模特。

<?php
class Role extends Eloquent
{
    protected $table = 'role';

    public function user()
    {
        return $this->belongsTo(User::class);
    }

}

现在我只获得所有角色名称,而不是正确的东西。

1 个答案:

答案 0 :(得分:1)

使用用户和角色之间关系的反向。获取角色并获取角色,而不是获取用户,您可以获得相应的用户(这当然要求Role模型具有定义关系的users()方法:

// You can of course use conditions here to filter out what roles you want loaded
$roles = Role::all();

然后遍历角色,并为每个角色迭代其用户:

<div class="panel-group col-sm-offset-1 col-sm-10">
  @foreach($roles as $role)
    <div class="panel panel-default">
      <div class="panel-heading">
        <h3 class="panel-title">{{ $role->name }}</h3>
      </div>
      <div class="panel-body">
        <ul class="list-group">

          @foreach($role->users as $user)
            <li class="list-group-item">
              <img src="{{ Config::get('app.url') }}/public/img/avatar.jpg" style="float:left;margin-right:15px;padding-bottom:5px;" class="img-circle" alt="{{ $user->username }}" width="75" height="75">
              <h4 style="color:{{ $role->colour }};">{{ $user->username }}</h4>
              <p>Een klein beetje info over wie ik ben enzo... :p</p>
            </li>
          @endforeach

        </ul>

      </div>
    </div>
  @endforeach
</div>