2015-10-13 28 views
6

laravel 5クエリビルダを使って従業員管理システムに問題があります。ここに私のEmployeesControllerクラス 'App Http Controllers DB'がLaravel 5コントローラに見つかりません

<?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(); 

とのコードを試してみましたが、それは私もをdb.phpファイルをコピーしたライン6 上の非オブジェクトのメンバ関数の数()の呼び出しを言う別のエラーをスローし、 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 

のですか?

+1

ここで、 ' - > count()'を使用しようとしていますか?私はあなたのコードでそれが表示されません。また、 'null'オブジェクトに対して' - > count() 'をコールしようとすると、そのエラーが発生します。また、 '\ DB'を使ってあなたのタイトルのエラーを取り除きます。これは\を使用して解決される名前空間の問題です。あなたの後に別のエラーが発生したのは残念ですが、やや無関係です。 –

+0

ちょうど質問にビューを含めた – user3659497

+0

まあ、あなたは正しいです。それは私に問題を与えていたビューのカウント関数でした。 – user3659497

答えて

15

DBは、現在のネームスペースApp\Http\Controllersにありません。だから、トップ

use DB; 

でそれをインポートしたり、バックスラッシュ\DB::table(...)でそれを前に置くことができます。これは、クラスが見つかりません例外を解決します。

ただし、Laravel Collection of Employeeモデルではなく、データベース行の配列を取得しています。配列は最終的なエラーとなるcount()関数を持つオブジェクトではありません。

更新:Laravel 5.3は配列ではなくCollectionオブジェクトを返します。だからcount()はそれに作用します。

関連する問題