web-dev-qa-db-fra.com

La classe 'App\Http\Controllers\DB' est introuvable et je ne peux pas non plus utiliser un nouveau modèle.

J'ai un problème très basique. En L4, les méthodes ci-dessous ont fonctionné hors de la boîte, alors maintenant je suis perdu. S'il vous plaît aider. Il y a quelques jours, j'ai démarré un projet Laravel 5.0. J'ai maintenant une nouvelle installation propre.

Problème 1: Quand j'essaie d'obtenir quelque chose de la base de données

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

J'ai compris:

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

Problème 2: Avant de cloner le modèle User.php, modifiez le nom de la classe en "Offre". Vous trouverez ci-dessous le contenu du fichier Quotations.php placé dans le dossier racine de l’application:

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

Toute tentative d'utilisation du modèle 

$headquote = Quotation::find(176);

se termine avec ceci:

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

Des idées comment je pourrais résoudre le problème? 

42
Peter

Le problème ici est les espaces de noms PHP. Vous devez apprendre à les utiliser. Comme votre contrôleur se trouve dans l'espace de noms App\Http\Controllers, si vous faites référence à une autre classe, vous devez ajouter une barre oblique inverse (ou un espace de noms approprié) ou ajouter une instruction use au début du fichier (avant la définition de la classe). 

Donc, dans votre cas, vous pourriez utiliser:

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

ou ajoutez dans votre instruction use de classe de contrôleur afin que le début de votre classe de contrôleur ressemble à ceci:

<?php

namespace App\Http\Controllers;

use DB;
use App\Quotation;

Pour plus d'informations sur les espaces de noms, vous pouvez consulter Comment utiliser des objets d'autres espaces de noms et comment importer des espaces de noms dans PHP ou - espaces de noms dans PHP manual

113
Marcin Nabiałek

Rapide et sale

use DB; 

OR

\DB::table...
11
Pedro Lobito

Ajoutez simplement ce haut de votre contrôleur.

use DB;
5
Mamun Rasid

Essayez comme ça:

<?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

Il y a un problème dans l'espacement des noms comme dans 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

Utilisez la barre oblique inverse avant db sur l'en-tête et vous pouvez l'utiliser ensuite comme vous l'avez écrit auparavant.

Voici l'exemple:

Use \DB;

Ensuite, dans votre classe de contrôleur, vous pouvez utiliser comme vous le faisiez auparavant, comme ceci:

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