wake-up-neo.com

Klasse 'App\Http\Controllers\DB' nicht gefunden und ich kann auch kein neues Modell verwenden

Ich habe ein grundlegendes Problem. In L4 haben die folgenden Methoden aus der Box heraus gearbeitet, so dass ich mich jetzt verirrt habe. Bitte helfen Vor ein paar Tagen habe ich ein Laravel 5.0 Projekt gestartet. Ich habe jetzt frische, saubere Installation.

Problem 1: Wenn ich versuche, etwas von der Datenbank zu bekommen

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

Ich bekomme das:

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

Problem 2: Bevor ich das User.php-Modell geklont habe, wurde der Klassenname in "Zitat" geändert. Nachfolgend finden Sie den Inhalt der Datei Quotations.php im Stammverzeichnis der App:

<?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';
}

Jeder Versuch, das Modell zu verwenden 

$headquote = Quotation::find(176);

endet damit:

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

Irgendwelche Ideen, wie ich das Problem lösen könnte? 

42
Peter

Das Problem hier sind PHP Namespaces. Sie müssen lernen, wie man sie benutzt. Da sich Ihr Controller im App\Http\Controllers-Namespace befindet, müssen Sie, wenn Sie auf eine andere Klasse verweisen, einen führenden Backslash (oder einen geeigneten Namespace) oder eine use-Anweisung am Anfang der Datei (vor der Klassendefinition) hinzufügen. 

In Ihrem Fall könnten Sie also Folgendes verwenden:

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

oder fügen Sie die Anweisung use der Controller-Klasse hinzu, damit der Anfang Ihrer Controller-Klasse folgendermaßen aussehen könnte:

<?php

namespace App\Http\Controllers;

use DB;
use App\Quotation;

Weitere Informationen zu Namespaces finden Sie unter Verwendung von Objekten aus anderen Namespaces und zum Importieren von Namespaces in PHP oder Namespaces im Handbuch PHP

113

Schnell und dreckig

use DB; 

OR

\DB::table...
11
Pedro Lobito

Fügen Sie einfach diese Oberseite Ihres Controllers hinzu.

use DB;
5
Mamun Rasid

Versuchen Sie es so:

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

    }
  }

?>
0
radhason power

Es gibt Probleme im Namensabstand wie in 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

Verwenden Sie den Backslash vor db in der Kopfzeile, und Sie können ihn normalerweise so verwenden, wie Sie es zuvor geschrieben haben.

Hier ist das Beispiel:

Use \DB;

Dann können Sie in Ihrer Controller-Klasse wie zuvor verwenden, z.

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