在Laravel 5 Controller

时间:2015-10-13 15:38:27

标签: laravel laravel-5

使用laravel 5查询构建器进行员工管理系统时遇到问题。这是我的EmployeesController

<?php

namespace App\Http\Controllers;

use App\Employee;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class EmployeesController extends Controller
{

    public function index()
    {
        // $employees = Employee::all();
        // return view('employees.index', compact('employees'));

        $employees = DB::table('employees')->get();

        return view('employees.index', compact('employees'));
    }

}

当我使用注释掉的代码时,视图有效,我可以看到我的员工列表

$employees = Employee::all();
return view('employees.index', compact('employees'));

我在这里看到answer,我按照建议做了但没有运气。我添加了使用DB;在命名空间声明之后,还尝试了

代码
$employees = \DB::table('employees')->get();

但它会抛出另一个错误,表示在第6行的非对象上调用成员函数count()。 我甚至将DB.php文件从C:\ xampp \ htdocs \ laravel5project \ vendor \ laravel \ framework \ src \ Illuminate \ Support \ Facades复制到App文件夹(C:\ xampp \ htdocs \ laravel5project \ app)但仍然没有运气。 我还试图明确地给它命名空间

use Illuminate\Support\Facades\DB

这是视图

@extends('layouts.default')
@section('PageTitle', 'Employee List')
@section('content')

@if ( !$employees->count() )
    There are no Employees!
@else    

<table id="tblEmployee" class="table table-striped table-bordered" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>Name</th>
        </tr>
    </thead>

    <tbody>
        @foreach( $employees as $employee )
        <tr>             
            <td>{{$employee->Name}}</td>
        </tr>
        @endforeach

    </tbody>
</table>

@endif
@endsection

可能是什么问题?

3 个答案:

答案 0 :(得分:16)

DB不在您当前的命名空间App\Http\Controllers中。所以你可以在顶部导入它

use DB;

或以反斜杠\DB::table(...)开头。这解决了未找到类的异常。

但是,您没有获得Laravel Employee模型集合,而是获取数据库行数组。数组不是具有count()函数的对象,这会导致最终错误。

更新:Laravel 5.3将返回Collection对象而不是数组。因此count()将对此起作用。

答案 1 :(得分:1)

如果您在laravel的控制器上找不到类似“ App \ Http \ Controllers \ DB”类的错误。 class 'app\http\controllers\db' not found

因此,在YourController文件顶部添加 use DB; 以及其他前缀:

<?php
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
use DB;
 
class YourController extends Controller
{
    public function index(Request $request)
    {
        
    }
 
}

答案 2 :(得分:0)

未在控制器中设置数据库:

<?php

namespace App\Http\Controllers;

use DB;
use App\Employee;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class EmployeesController extends Controller
{
    public function index()
    {
        // $employees = Employee::all();
        // return view('employees.index', compact('employees'));
        $employees = DB::table('employees')->get();
        return view('employees.index', compact('employees'));
    }
}