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?
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
Rapide et sale
use DB;
OR
\DB::table...
Ajoutez simplement ce haut de votre contrôleur.
use DB;
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);
}
}
}
?>
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';
}
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();