[英]How to pass nested foreach from laravel controller to view on blade
如何從laravel
控制器傳遞嵌套的foreach
以查看基於樹結構的刀片
基於上述代碼中的 referende_id 的三個級別我已經獲取了三個級別,現在我想將值傳遞給laravel
的刀片,任何人都可以幫我解決這個問題。
class ClientController extends Controller {
public
function index($reference_id) {
$clients = table1::leftjoin('table2', function($join) {
$join -> on('table2.user_id', '=', 'table1.id');
}) -> where('table1.reference_id', '=', $reference_id) -> get();
foreach($clients as $levelOne) { //here $row is the current $data's collection
$clientsLevelOne = table1::leftjoin('table2', function($join) {
$join -> on('table2.user_id', '=', 'table1.id');
}) -> where('table1.under_reference', '=', $levelOne -> reference_id) -> get();
//$clientsLevelOne = arrayName["levelOne"];
//$variable_name['one'] = value;
$datas = array($clientsLevelOne);
foreach($datas as $items) {
//echo 'LEVEL ONE:<br><br>';
foreach($items as $values) {
$LevelOne = $values;
//echo $LevelOne.'<br><br>';
}
}
//return $LevelOne;
foreach($datas as $items) { //echo '<br>LEVEL TWO:<br><br>';
foreach($items as $values) {
$levelTwo = $values['reference_id'];
$clientsLevelTwo = table1::leftjoin('table2', function($join) {
$join -> on('table2.user_id', '=', 'table1.id');
}) -> where('table1.under_reference', '=', $levelTwo) -> get();
//dump($clientsLevelTwo);
$LevelDatas = array($clientsLevelTwo);
//$LevelDatas = array_merge($LevelTwo);
//print_r($LevelDatas);
//echo '<br>LEVEL TWO:<br><br>';
foreach($LevelDatas as $two) {
foreach($two as $values) {
$levelThree = $values;
}
}
}
}
foreach($datas as $items) { //echo '<br>LEVEL THREE:<br><br>';
foreach($items as $values) {
$levelThree = $values['reference_id'];
$clientsLevelThree = table1::leftjoin('table2', function($join) {
$join -> on('table2.user_id', '=', 'table1.id');
}) -> where('table1.under_reference', '=', $levelThree) -> get();
$LevelDatas = array($clientsLevelThree);
foreach($LevelDatas as $two) {
foreach($two as $values) {
$levelDatasThree = $values['reference_id'];
$clientsLevelDatasThree = table1::leftjoin('table2', function($join) {
$join -> on('table2.user_id', '=', 'table1.id');
}) -> where('table1.under_reference', '=', $levelDatasThree) -> get();
$ThreeDatas = array($clientsLevelDatasThree);
foreach($ThreeDatas as $three) {
foreach($three as $values) {
$levelThreeDatas = $values;
}
}
}
}
}
}
}
你可以通過 Laravel 的 Eloquent ORM 通過快速和相關的方式實現 3 個級別的關聯數據。
首先創建模型Level1、Level2和Level3。
以這種方式創建與 Level1 和 Level2 的關系:
<?php
// Level 1 relation with Level 2 in App\Level1
public function level2(){
return $this->hasMany('App\Level2','level_id','id');
}
?>
以這種方式創建與 Level1 和 Level2 的關系:
<?php
// Level 2 relation with Level 3 in App\Level2
public function level3(){
return $this->hasMany('App\Level3','level_id','id');
}
?>
然后簡單地在控制器的方法中調用它
<?php
use App\Level1;
public function index(){
$levels = Level1::with(['level2.level3'])->get();
return view('path.file.anyone',compact('levels'));
}
?>
記住! 不要在任何類型的循環中查詢,否則在某個階段您的系統處理時間將受到影響
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.