web-dev-qa-db-ja.com

クラス 'App \ Http \ Controllers \ DB'が見つからず、新しいモデルを使用することもできません

非常に基本的な問題があります。以下のL4 thesでは、メソッドはそのまま使用できたので、今は迷っています。助けてください。数日前、Laravel 5.0プロジェクトを開始しました。これで、新鮮でクリーンなインストールができました。

問題1:データベースから何かを取得しようとすると

$headquote = DB::table('quotation_texts')->find(176);

私はこれを得る:

Class 'App\Http\Controllers\DB' not found

問題2:User.phpモデルを複製する前に、クラス名を「Quotation」に変更しました。以下は、アプリのルートフォルダに置かれたファイルQuotations.phpの内容です。

<?php namespace App;

 use Illuminate\Database\Eloquent\Model;

 class Quotation extends Model  {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'quotation_texts';
}

モデルを使用する試み

$headquote = Quotation::find(176);

これで終わる:

Class 'App\Http\Controllers\Quotation' not found

問題を解決する方法はありますか?

48
Peter

ここでの問題は、PHP名前空間です。それらを使用する方法を学ぶ必要があります。コントローラーはApp\Http\Controllers名前空間にあるため、他のクラスを参照する場合は、先頭のバックスラッシュ(または適切な名前空間)を追加するか、ファイルの先頭(クラス定義の前)にuseステートメントを追加する必要があります。

したがって、あなたの場合には次を使用できます:

$headquote = \DB::table('quotation_texts')->find(176);
$headquote = \App\Quotation::find(176);

または、コントローラクラスuseステートメントを追加して、コントローラクラスの先頭が次のようになるようにします。

<?php

namespace App\Http\Controllers;

use DB;
use App\Quotation;

名前空間の詳細については、 PHPで他の名前空間のオブジェクトを使用する方法と名前空間をインポートする方法 または PHP manualの名前空間 を参照してください。

125

早くて汚い

use DB; 

OR

\DB::table...
12
Pedro Lobito

コントローラーのこの上部を追加するだけです。

use DB;
7
Mamun Rasid

このようにしてみてください:

<?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    use DB;

    class UserController extends Controller
    {

    function  index(){

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

    foreach ($users as $user)
    {
        var_dump($user->name);
    }

    }
  }

?>
1
radhason power

ヘッダーのdbの前にバックスラッシュを使用すると、通常は前に書いたとおりに使用できます。

以下に例を示します。

Use \DB;

次に、コントローラークラス内で、以前と同じように、つまりそのように使用できます。

$item = DB::table('items')->get();
1
Marvin Mustafa

laravel 5.2.3のように名前の間隔に問題があります

use DB;
use App\ApiModel; OR  use App\name of model; 

DB::table('tbl_users')->insert($users); 

OR

DB::table('table name')->insert($users);



model 

class ApiModel extends Model
    {

        protected $table='tbl_users';

}
0
vishal