我正在尝试从我的数据库中检索记录,但我总是在@foreach中得到一个无效的参数错误。我的语法看起来正确,我找不到问题所在。请帮助。
role.blade.php
<div class="box-body">
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<!-- <th></th> -->
<th>Name</th>
<th>Company ID</th>
<th>Role Type</th>
</tr>
</thead>
<tbody>
@foreach ($data as $datas)
<tr>
<td>{{ $datas->id }}</td>
<td>{{ $datas->company_name }}</td>
<td>{{ $datas->role_type }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
Controller.php这样
public function roles(){
$data = DB::select('select * from roles');
return view('admin.roles', ['data'=>'$data']);
}
routes.php文件
Route::get('/roles', 'mainController@roles');
答案 0 :(得分:5)
你正在尝试迭代字符串,所以改变这个:
'data'=>'$data'
要:
'data' => $data
答案 1 :(得分:1)
您必须使用get()
方法从数据库中获取数据。从视图函数$data
中删除单引号,使用单引号传递数据将视为字符串而不是数组。
public function roles(){
$data = DB::select('select * from roles')->get();
return view('admin.roles', ['data'=>$data]);
}
答案 2 :(得分:0)
这会产生错误,因为$data
将为空。
所以你需要检查变量是否设置而不是空。
在您的刀片模板文件中,您需要输入if
语句,如下所示:
.....
</tr>
</thead>
<tbody>
@if (isset($data) && !empty($data))
@foreach ($data as $datas)
<tr>
<td>{{ $datas->id }}</td>
<td>{{ $datas->company_name }}</td>
<td>{{ $datas->role_type }}</td>
</tr>
@endforeach
@endif
</tbody>
.....