我有动态表,并且表中列出了表数据,我将尝试这种方式
$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新版本!
答案 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