Classe 'AppHttpControllersDB' introuvable et je ne peux pas non plus utiliser un nouveau modèle
j'ai un problème très basique. En 14 ci-dessous les méthodes ont travaillé hors de la boîte, donc maintenant je suis perdu. S'il vous plaît aider. Il y a quelques jours, J'ai lancé un projet Laravel 5.0. J'ai maintenant une installation fraîche et 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'obtiens ceci:
Class 'AppHttpControllersDB' not found
problème 2: Avant de cloner L'utilisateur.modèle php, changement de nom de classe en "Quotation". Ci-dessous le contenu du fichier Citation.php mis dans le dossier racine App:
<?php namespace App;
use IlluminateDatabaseEloquentModel;
class Quotation extends Model {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'quotation_texts';
}
toute tentative d'utiliser le modèle
$headquote = Quotation::find(176);
se termine par ceci:
Class 'AppHttpControllersQuotation' not found
des idées pour résoudre le problème?
6 réponses
le problème ici, ce sont les espaces de noms PHP. Vous avez besoin d'apprendre comment les utiliser. Comme votre controller est dans App\Http\Controllers
namespace, si vous référez une autre classe, vous devez ajouter le leading backslash (ou l'Espace-nom approprié) ou ajouter use
statement au début du fichier (avant la définition de la classe).
Donc dans votre cas, vous pouvez utiliser:
$headquote = \DB::table('quotation_texts')->find(176);
$headquote = \App\Quotation::find(176);
ou ajouter dans votre déclaration de classe de contrôleur use
donc le début de votre contrôleur la classe pourrait ressembler à ceci:
<?php
namespace App\Http\Controllers;
use DB;
use App\Quotation;
pour plus d'informations sur les namespaces, vous pouvez consulter comment utiliser des objets à partir d'autres namespaces et comment importer des namespaces en PHP ou namespaces en PHP manuel
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';
}
essayez comme ceci:
<?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);
}
}
}
?>
utilisez le antislash avant db sur l'en-tête et vous pouvez l'utiliser alors typiquement comme vous l'avez écrit avant.
Voici l'exemple:
Use \DB;
alors dans votre classe de contrôleur vous pouvez utiliser comme vous l'avez fait avant, comme cela ie:
$item = DB::table('items')->get();