Ich habe Tabellen:Return Logik von Controller in Ansicht Laravel 5
REGIONS
id | name
----+------------------
1 | South Luzon
----+------------------
2 | North West Luzon
----+------------------
3 | North East Luzon
=====================================
BRANCHES
machinenum | name | region_id
-----------+-----------+-----------
108 | Alaminos | 1
-----------+-----------+-----------
104 | Alexander | 3
-----------+-----------+-----------
131 | Santiago | 3
-----------+-----------+-----------
114 | Apalit | 1
-----------+-----------+-----------
137 | Baliuag | 1
-----------+-----------+-----------
115 | Baguio | 2
-----------+-----------+-----------
116 | Bantay | 2
-----------+-----------+-----------
130 | San Jose | 3
=======================================
USERS
id | name | machinenum
---+-------+-------------
1 | user1 | 108
---+-------+-------------
2 | user2 | 104
---+-------+-------------
3 | user3 | 131
========================================
PENDINGS
user_id | docdate
--------+------------
2 | 2016-07-14
--------+------------
1 | 2016-07-13
--------+------------
1 | 2016-07-14
--------+------------
3 | 2016-07-13
Was ich will, ist von den Benutzern gruppiert nach Branchen und Regionen alle anstehenden gesendet angezeigt werden soll. Also meine Frage ist, wie alle Regionen auswählen und in einer Schleife wählen Sie Zweige, die die region_id
abgestimmt, inner join
die users
Tabl, um die user_id
und innerhalb dieser zu erhalten, wählen alle anstehenden dass abgestimmt, dass der user_id
abgestimmt und die docdate
angezeigt, wenn die Abfrage NOT NULL
sonst Anzeige 0
.
Hier ist meine Frage in meinem Controller:
$regions = DB::select('SELECT * FROM regions');
foreach ($regions as $region) {
echo $region->name . "<br>";
$branches = DB::select('SELECT b.machinenum, b.name AS bname, u.id as uid
FROM branches AS b
INNER JOIN users AS u ON b.machinenum=u.machinenum
WHERE region_id=:id
ORDER BY b.name ASC',
['id' => $region->id]);
foreach ($branches as $branch) {
echo $branch->bname . "<br>";
$pendings = DB::select('SELECT * FROM pendings WHERE user_id=:id', ['id' => $branch->uid]);
if ($pendings) {
foreach ($pendings as $pending) {
echo $pending->docdate . "<br>";
}
echo "<br>";
} else {
echo "0 <br>";
}
}
echo "<br>";
}
Ergebnis sein wird:
South Luzon
Alaminos
2016-07-14 -- docdate
Apalit
0 -- return 0 if no pending
Baliuag
0 -- return 0 if no pending
North West Luzon
Baguio
0 -- return 0 if no pending
Bantay
0 -- return 0 if no pending
North East Luzon
Alexander
2016-07-13 -- docdate
2016-07-14 -- docdate
San Jose
0 -- return 0 if no pending
Santiago
2016-07-13 -- docdate
Nun, das ist genau das, was ich will. Aber diese Logik ist in meinem Controller. Ich möchte, dass es meiner Ansicht nach ist. Wie kann ich diese Logik aus meiner Sicht zurückgeben? Gibt es einen Weg, es zu tun? Alles, was ich aus meiner Sicht tun kann, ist @foreach and @if
.
Hier ist mein aktueller Code aus meiner Sicht (Sie die Beziehung zwischen den Nutzern und Zweigen nichts dagegen, ich habe es schon in meinem Modell):
// Note! In controller I have:
$regions = Region::all();
$branches = Branch::all();
$pendings = Pending::all();
return view('pending.index', compact('regions', 'branches', 'pendings'));
<table class="table table-noborder table-extra-condensed">
<thead>
<tr>
<th class="custom-td text-center">Date</th>
</tr>
</thead>
<tbody>
@foreach ($regions as $region)
<tr>
<th colspan="19">{{ $region->name }}</th>
</tr>
@foreach ($branches as $branch)
@if ($region->id === $branch->region_id)
<tr>
<td>{{ $branch->name }}</td>
</tr>
@foreach ($pendings as $pending)
@if ($branch->machinenum === $pending->user->machinenum)
<tr>
<td class="custom-td text-center">{{ $pending->docdate->format('d') }}</td>
</tr>
@endif
@endforeach
@endif
@endforeach
@endforeach
</tbody>
</table>
Ich erhalte diesen Fehler. Ich weiß nicht warum: BadMethodCallException in Builder.php Zeile 2345: Aufruf an undefinierte Methode Illuminate \ Database \ Query \ Builder :: all(). Und fügen Sie 'td' in Ihrem' tr' hinzu. –
Sorry, sollte get() anstelle von all() – Magus
In Ihrem '@ forelse', ist es nicht $ Zweig-> usermachines-> pendings als $ pending'? Coz ich habe es funktioniert anstatt nur $ Zweig-> pendings als $ pending'. –