我想从名为' users'的数据库表中获取数据。并在表格中显示输出。
我写了下面的代码,但它没有用。
我正在使用Laravel 5.5
@extends('layouts.app')
@section('content')
<div class="container">
<h2>Admin Panel</h2>
<p>Data of the Registered Users.</p>
<table class="table table-bordered">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
$users = DB::table('users')->select('id','name','email')->get();
@foreach($users as $value)
<tr>
<td>{{ $value->id }}</td>
<td>{{ $value->name }}</td>
<td>{{ $value->email }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endsection
错误:未定义变量:用户
答案 0 :(得分:2)
问题是您正在尝试在您的(Blade)模板中混合使用PHP。尽管可以使用@php
指令执行此操作,但这是不好的做法:您的视图不应包含任何业务逻辑。
理想情况下,您希望从控制器传递此数据。看起来应该是这样的:
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
public function index()
{
$users = DB::table('users')->select('id','name','email')->get();
return view('some-view')->with('users', $users);
}
}
详细了解如何将数据传递给观看here。
答案 1 :(得分:0)
您做错了,MVC
设计的目的是让您的controllers
执行应用程序逻辑,将您的视图表示为representation of that data
,将模型表示为contain the data you need
},在您的情况下,您在视图中使用DB::table
完全忽略了这一点,因此这里有一个示例代码可能需要纠正一点:
下面的示例未显示MVC
模式,因为data
是从route
的封闭内传递的
<强> web.php 强>
Route::get('/', function () {
$users = DB::table('users')->select('id','name','email')->get();
return view('VIEW-NAME-HERE', compact('users'));
});
<强> view.blade.php 强>
@foreach($users as $user)
{{ $user->id }} {{ $user->name }} {{ $user->email }}
@endforeach
使用VIEW-NAME-HERE
文件的名称更改view
,例如index
或users.index