2015-10-13 10 views
6

Mam problem z używaniem kreatora zapytań laravel 5 dla systemu zarządzania pracownikami. Oto moja EmployeesControllerKlasa "App Http Controllers DB" nie została znaleziona w kontrolerze 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')); 
    } 

} 

kiedy używam wykomentowane kod, widok dzieła i widzę moja lista pracownik

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

widziałem answer tutaj, i ja jak zasugerował ale bez powodzenia . Dodałem używać DB; po deklaracji przestrzeni nazw, a także próbowali kod z

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

ale rzuca kolejny błąd, który mówi do połączenia funkcji count (członek), w sposób wolny od obiektu na linii 6. nawet skopiowany plik Db.php z C: \ xampp \ htdocs \ laravel5project \ vendor \ laravel \ framework \ src \ Illuminate \ Support \ Fasady do folderu aplikacji (C: \ xampp \ htdocs \ laravel5project \ app), ale wciąż nie ma szczęścia. Próbowałem też jawnie nadać mu nazw

use Illuminate\Support\Facades\DB 

Oto widok

@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 

Co może być problemem?

+1

Gdzie próbujesz użyć '-> count()'? Nie widzę tego w twoim kodzie. Ponadto, jeśli spróbujesz wywołać '-> count()' na obiekcie 'null', otrzymasz ten błąd. TAKŻE, użycie '\ DB' pozwoli pozbyć się błędu w tytule. Jest to problem z przestrzenią nazw, który jest rozwiązywany za pomocą \. Szkoda, że ​​napotkałeś kolejny błąd zaraz po tym, ale są one nieco niezwiązane. –

+0

Właśnie włączyłem widok na pytanie – user3659497

+0

Dobrze, miałeś rację. To funkcja liczenia na widoku dawała mi problemy. – user3659497

Odpowiedz

15

DB nie znajduje się w aktualnej przestrzeni nazw App\Http\Controllers. Więc można albo zaimportować go w górnym

use DB; 

lub poprzedzić go odwrotnym ukośnikiem \DB::table(...). Rozwiązuje to wyjątek klasy nie znaleziony.

Nie otrzymujesz jednak kolekcji modeli pracowników Laravel, ale szereg wierszy w bazie danych. Tablice nie są obiektami, które mają funkcję count(), która powoduje końcowy błąd.

Aktualizacja: Laravel 5.3 zwróci obiekt kolekcji, a nie tablicę. Więc count() będzie nad tym pracował.

Powiązane problemy