[英]PHP - Laravel 5 get data to html table from 3 SQL database tables with column DATA as headers
我對PHP還是很陌生,所以請多多包涵-這對您來說可能是完全顯而易見的,但不幸的是,我正在拔頭發!...有關信息,我正在使用Laravel 5。
我想使用SQL數據庫表(teams和user_profiles)中的數據在列中標有相關團隊名稱(存儲在teams表中)的標題下方列出配置文件圖像,然后列出用戶名(均存儲在user_profiles表中)。 。
我設法通過在“管理員”控制器中為每個團隊手動創建一個變量來做到這一點,每個變量都包含一個查詢,以根據teams表中的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來創建與teams表上的行一樣多的列,並使用team name填充每一列的表頭。 但是,我無法確定的是如何根據每個團隊的users_profiles數據填充每一列-目前,我知道這是行不通的-是每列中重復的個人資料圖片和用戶1的名稱。
假設user_profiles表有9行,並且每個用戶配置文件行都有id,name和team_id,而teams表有4行,每行分別包含team_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
轉儲$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"
}
]
}
如果您所有團隊的用戶人數都相同,則可以將此變量添加到控制器中:
// 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);
然后將它們傳遞給您的視圖:
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的藏品文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.