Как запустить два цикла foreach внутри одной HTML-таблицы в Laravel? - PullRequest
4 голосов
/ 18 марта 2019

Я хочу, чтобы два foreach данных цикла динамически отображались в одной таблице, но дизайн таблицы разрывался после данных динамического цикла.Мой код blade.php указан ниже:

<table>
  <tr>
     <th>Name</th>
     <th>Buy Rate</th>
     <th>Sell Rate</th>
  </tr>
  <tr>
   <?php foreach($datav as $data){ ?>
     <td><?php echo $data->name; ?></td>
     <td><?php echo $data->buy_rate; ?></td>
   <?php } ?>
  <?php foreach($sells as $sell){ ?>
     <td><?php echo $sell->rate; ?></td>
  </tr>
  <?php } ?>
</table>

Мой маршрут:

Route::get('/','WelcomeController@test');

Мой код контроллера:

public function test(){

$datav= DB::table('localcurrency')
              ->where('status',1)
              ->get();
$sells= DB::table('localcurrency2')
              ->where('status',1)
              ->distinct()
              ->get();

return view('home.home_content')
        ->with('datav',$datav)
        ->with('sells',$sells);

}

Как я могу запустить это?

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

Лучше, если вы объедините $ datav и $ sells в одном массиве.

В этом сценарии сначала ваш массив $ datav завершится, затем он перейдет ко второму массиву.

Так что это не создаст полную таблицу. Или выравнивание таблицы будет неправильным.

Отдых зависит от того, что вы продолжаете в массиве.

public function test(){

$datav= DB::table('localcurrency')
          ->where('status',1)
          ->get();
$sells= DB::table('localcurrency2')
          ->where('status',1)
          ->distinct()
          ->get();
$sells=$sells->toArray();
$results=array();
foreach($datav as $key=>$data)
{
   $newarr=array();
   $newarr['name']=$data->name;
   $newarr['buy_rate']=$data->buy_rate;
   $newarr['sell_rate']=$sells[$key]->rate;
   $results[]=$newarr;
}
return view('home.home_content')
    ->with('results',$result);

}

Ваши взгляды выглядят так

<table>
   <tr>
    <th>Name</th>
    <th>Buy Rate</th>
    <th>Sell Rate</th>
   </tr>
   @foreach($results as $result)
     <tr>
         <td>{{$result['name']}}</td>
         <td>{{$result['buy_rate']}}</td>
         <td>{{$result['sell_rate']}}</td>
    </tr>
  @endforeach

0 голосов
/ 18 марта 2019
  • лучше использовать синтаксис движка шаблонов Blade @foreach($values as $value) {{$value}} @endforeach
  • вы лучше понимаете, какую структуру вы хотите получить
  • Ваша задача в этом случае не решена, потому что если вы хотите заполнить
    одна таблица строка за строкой по некоторым данным, эти данные должны быть взаимосвязаны отношения один к одному, поэтому вы должны сделать это в течение одного цикла
  • Вы не можете заполнить первые каждые значения первых двух столбцов таблицы и затем значения другого столбца. Таблица должна быть заполнена построчно
...