如何在foreach循环中列出动态表数据

时间:2019-12-07 19:23:11

标签: php laravel loops

我有动态表,并且表中列出了表数据,我将尝试这种方式

$cat= DB::table('categories')->get(); //these is take table name 
 foreach($cat as $data){
 $res= DB::table($data->name)->get(); //query build
 }
return view('admin.company')->with('result',$res)->with('catg',$cat); // pass to view page

我在视图页面中打印数据,但它仅列出了一个表数据,就像我这样打印

@foreach($result as $datas)    
<td >  {{$datas->phone}} </td>
<td >  @foreach($catg as $cat) @if($cat->id==$datas->cat_id){{$cat->name}} @endif @endforeach </td>
<td >  {{$datas->discription}} </td>
@endforeach

如何以任何方式在一个视图中列出所有表数据?我正在使用laravel新版本!

2 个答案:

答案 0 :(得分:1)

这是行不通的,因为您每次在循环中都分配给$res,因此它只会是显示的最后一个表信息。

将循环的内部更改为$res[] = DB::table($data->name)->get();

然后,您需要在视图中创建一个外部循环,

@foreach($res as $table)
  @foreach($table as $datas)    
  <td >  {{$datas->phone}} </td>
  <td >  @foreach($catg as $cat) @if($cat->id==$datas->cat_id){{$cat->name}} @endif 
  @endforeach </td>
  <td >  {{$datas->discription}} </td>
  @endforeach
@foreach

添加您为什么要尝试所做的事情也可能会帮助您解决问题。我可以看到您的方法还有很多其他问题,但是如果不了解您的数据,很难提供更好的解决方案。

答案 1 :(得分:1)

您可以更巧妙地做到这一点

$cat= DB::table('categories')->get(); //these is take table name
foreach($cat as $data){
    $res[$data->name] = DB::table($data->name)->get(); //query build
    // or 
    // $res[] = [
    //     'category' = $data,
    //     'data' => DB::table($data->name)->get()
    //]
}
return view('admin.company')->with('result',$res);

可见

@foreach($res as $tableName => $data)
    @foreach($data as $datas)
        <td >  {{$datas->phone}} </td>
        <td >  {{$tableName}} </td>
        <td >  {{$datas->discription}} </td>
    @endforeach
@foreach