[解決済み] Class 'AppHttpControllers</DB' not found in Laravel 5 Controller
2022-01-30 04:30:17
質問
従業員管理システムで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'));
を見ました。 回答 ここで、提案されたとおりにしましたが、うまくいきません。名前空間宣言の後にuse DB;を追加し、以下のコードも試してみました。
$employees = \DB::table('employees')->get();
しかし、6行目で非オブジェクトのメンバー関数count()への呼び出しという別のエラーを投げてしまいます。 DB.phpをC:³³からAppフォルダ(C:³³)にコピーしてもダメでした。 明示的にnamespaceを付与することも試してみました。
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
何が問題なのでしょうか?
解決方法は?
DB
が現在のネームスペースにない場合
App\Http\Controllers
. そのため、トップでそれをインポートすることができます
use DB;
またはその前にバックスラッシュを付ける
\DB::table(...)
. これにより、クラスが見つからない例外が解決されます。
しかし、あなたは Employee モデルの Laravel Collection ではなく、データベース行の配列を得ています。配列は、count()関数を持つオブジェクトではないので、最終的なエラーになります。
更新:Laravel 5.3は配列ではなく、Collectionオブジェクトを返すようになりました。そのため、count()はその上で動作します。
関連
-
[解決済み】「お客様の要件はインストール可能なパッケージのセットに解決できませんでした」エラーの解決方法は?
-
[解決済み] エラーベーステーブルまたはビューが見つかりませんを修正する方法:1146テーブルlaravelの関係テーブル?
-
[解決済み] htmlentities() はパラメータ 1 が文字列であることを予期しており、オブジェクトが与えられている
-
[解決済み] Laravel Homesteadを使用しています。'入力ファイルが指定されていない'
-
入力ファイルを開くことができませんでした:artisan
-
エラーの解決方法です。警告: count():Parameter は配列か、プロジェクトで Countable を実装したオブジェクトでなければなりません。
-
[解決済み】Laravel 5 - artisan seed 【ReflectionException】クラスSongsTableSeederが存在しない。
-
[解決済み】Laravel Eloquent。all()の結果の順序付け
-
[解決済み】マイグレーション。外部キー制約を追加できない
-
[解決済み】laravelで「有効なキャッシュパスを指定してください」エラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ホームステッドインストール
-
入力ファイルを開くことができませんでした:artisan
-
エラーの解決方法です。警告: count():Parameter は配列か、プロジェクトで Countable を実装したオブジェクトでなければなりません。
-
タイプエラーです。Too few arguments to function IlluminateSupport ゙Manager::createDriver()
-
[解決済み] "サーバーの応答 451 451 Temporary local - please try later" Mailgun、Laravel、VirtualBoxを使用してメールを送信する場合
-
[解決済み] のエラーが発生しました。OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 [重複].
-
[解決済み】Laravel - Eloquent "Has", "With", "WhereHas" - これらの意味は何ですか?
-
[解決済み】Eloquent Collection。空白のカウントと検出
-
[解決済み】Laravel 5 - artisan seed 【ReflectionException】クラスSongsTableSeederが存在しない。
-
[解決済み】Laravel ログイン後、元の宛先にリダイレクトする。