从Laravel中的数据库中获取数据

时间:2018-02-13 12:31:25

标签: php mysql laravel laravel-5

我想从名为' 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
  

错误:未定义变量:用户

2 个答案:

答案 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,例如indexusers.index