PHP - Laravel 5 从 3 个以 DATA 列为标题的 SQL 数据库表中获取数据到 html 表

标签 php mysql database laravel

我是 PHP 的新手,所以请多多包涵 - 这对您来说可能是显而易见的,但不幸的是我正在拔头发!... 有关信息,我正在使用 Laravel 5。

我想使用 SQL 数据库表(teams 和 user_profiles)中的数据在列中列出个人资料图像,后跟用户名(均存储在 user_profiles 表中),标题下方以相关团队名称(存储在团队表)。

我已经通过在我的“管理” Controller 中为每个团队手动创建一个变量来做到这一点,每个变量都包含一个查询以根据团队表中的 ID 号获取数据

我的 admincontroller.php 中的变量示例

$team1 = DB::table('user_profiles')
->join('users', 'users.id', '=', 'user_profiles.user_id')
->join('teams', 'teams.id', '=', 'user_profiles.teams_id')
->select('users.*', 'user_profiles.*', 'teams.*')
->where(['teams.id' => 1])
->get();

在 admin.blade.php 中调用它(修剪为仅显示“团队 1”)

<div class="col-md-4 text-center">
    <h3>Team 1</h3>
</div>

<div class="panel-inner-container">
    <div class="col-md-4 panel-inner-left">

    @foreach ($team1 as $profile)
        <img src="{{ $profile->profile_pic }}" alt="Avatar" class="avatar center-block" />
        <div class="lead text-center">
            <p>{{ $profile->name }}</p>
        </div>
    @endforeach
</div>        

我考虑过使用 html 表,我在其中使用 foreach 创建与团队表中的行一样多的列,并使用团队名称填充每列的表头。但是,我无法弄清楚的是如何根据每个团队使用 users_profiles 数据填充每一列 - 我目前拥有的 - 我知道这是行不通的 - 是每列中重复的个人资料图片和用户 1 的名称.

假设 user_profiles 表有 9 行,每个用户配置文件行有 id、name 和 teams_id 和 teams 表有 4 行,每行有 teams_id 和 team_name

我有什么

|------------|---------------|------------|-------------|
|team 1      |   team 2      |   team 3   |   team 4    |
|------------|---------------|------------|-------------|
|user 1 img  |  user 1 img   | user 1 img | user 1 img  |
|User 1 name | user 1 name   | user 1 name| user 1 name |
|------------|---------------|------------|-------------|
|user 1 img  |  user 1 img   | user 1 img | user 1 img  |
|User 1 name | user 1 name   | user 1 name| user 1 name |
|------------|---------------|------------|-------------|

我想要什么

|------------|---------------|------------|-------------|
|team 1      |   team 2      |   team 3   |   team 4    |
|------------|---------------|------------|-------------|
|user 1 img  |  user 2 img   | user 3 img | user 4 img  |
|User 1 name | user 2 name   | user 3 name| user 4 name |
|------------|---------------|------------|-------------|
|user 5 img  |  user 6 img   | user 7 img | user 8 img  |
|User 5 name | user 6 name   | user 7 name| user 8 name |
|------------|---------------|------------|-------------|

如果我需要提供任何额外信息,请告诉我,非常感谢任何想法。

这是 $team1 的示例转储:

Collection {#213 ▼
  #items: array:2 [▼
    0 => {#219 ▼
      +"id": 1
      +"name": "Tom"
      +"email": REMOVED
      +"password": REMOVED
      +"admin": 1
      +"remember_token": REMOVED
      +"created_at": "2017-10-19 18:07:00"
      +"updated_at": "2017-10-19 18:08:38"
      +"user_id": 1
      +"teams_id": 1
      +"profile_pic": "http://laravel.dev/uploads/dartboard.png"
      +"team_name": "Barkers"
      +"venue": "Barker Butts"
      +"venue_post_code": "CV5 9AR"
    }
    1 => {#216 ▼
      +"id": 1
      +"name": "John Smith"
      +"email": REMOVED
      +"password": REMOVED
      +"admin": 0
      +"remember_token": REMOVED
      +"created_at": "2017-10-19 18:07:00"
      +"updated_at": "2017-10-19 18:08:38"
      +"user_id": 3
      +"teams_id": 1
      +"profile_pic": "http://laravel.dev/uploads/dartboard.png"
      +"team_name": "Barkers"
      +"venue": "Barker Butts"
      +"venue_post_code": "CV5 9AR"
    }
  ]
}

最佳答案

如果您的所有团队都将拥有相同数量的用户,那么您可以将此变量添加到您的 Controller :

// Group all of your teams in a single array
$teams = [
    $team1,
    $team2,
    $team3,
    $team4
];

// Create an array with a length equal
// to the number of necessary rows
$rows = range(0, $team1->count() - 1);

然后将它们传递给您的 View :

return view('someview')->with([
    'teams' => $teams,
    'rows' => $rows
]);

最后像这样使用它们:

@foreach ($rows as $row)
    <tr>
        @foreach ($teams as $team)
            <td>
                {{ $team[$row]->profile_pic }} <br>
                {{ $team[$row]->name }}
            </td>
        @endforeach
    </tr>
@endforeach

希望这能让您了解如何实现您正在尝试构建的内容。

我建议给出 Laravel's collections documentation阅读。

关于PHP - Laravel 5 从 3 个以 DATA 列为标题的 SQL 数据库表中获取数据到 html 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840268/

相关文章:

php - 通过php将一个表中的一个字段与mysql中另一表中的多个字段进行比较

php - 在 Laravel 查询/子查询构建器中添加左连接

mysql - leftJoin 仅返回第一个表中的列

database - Postgres 中的循环删除级联

sql - 从远程 SQL Server 加载 SQLite 数据库?

javascript - php代码离线工作但不在线

php - 保存复选框列表以便用户可以在重新登录后打开列表的最佳方法是什么

php - SobiPro 导出 - 无限循环

mysql - C API 用于连接 C & SQL 数据库

javascript - Extjs表单提交