Enregistrer les données dans la base de données dans Laravel 5
Première
J'ai écrit un script de migration.
Deuxième
Je lance le php artisan migrate
à migrer de la table dans ma base de données.
Base de données
Maintenant, j'ai un subscribes
table dans ma base de données.
Il dispose de 2 champs : id
, et email
.
Route
Route::post('/subscribe', array('as' =>'subscribe','uses'=>'AccountController@postSubscribe'));
Modèle
<?php namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class Subscribe extends Model {
protected $table = 'subscribes';
//Validation Rules and Validator Function
public static function validator($input){
$rules = array(
'email' =>'required|email'
);
return Validator::make($input,$rules);
}
}
Contrôleur
<?php namespace App\Http\Controllers;
use Input, Validator, Auth, Redirect;
class AccountController extends Controller {
public function postSubscribe() {
$subscribe = new Subscribe; <-------- Line#46 (BUG HERE)
$subscribe->email = Input::get('email');
$subscribe->save();
dd("Hi");
return Redirect::to('/')
->with('success','You have been successfully subscribe to us.');
}
}
?>
Erreur
Questions
Pourquoi ne puis-je pas faire $subscribe = new Subscribe;
?
Quelle est la meilleure pratique pour insérer des données dans la base de données à l'aide de Laravel 5 ?
Mise à jour
Grâce à @Mark Baker.
Il semble que j'ai un problème avec mon espace de noms.
Ce namspacing est un peu confus pour moi.
Quelqu'un peut-il veuillez de clarifier ou d'expliquer un peu ?
Tout est appréciée.
Merci à l'avance.
App
; vous ne mentionnez pas l'espace de noms pour votre contrôleur: alors, peut-être $subscribe = new \App\Subscribe;
Regardez comme il corrige mon problème. :D. Comment puis-je résoudre ce problème si je ne veux pas utiliser `\App` avant mon abonnez-vous.
Si vous ne voulez pas de déclarer l'espace de noms chaque fois que vous instanciez un abonnement de modèle, il n'y a pas d'espace de noms, ou de définir un
use
en haut de votre ContrôleurJe ne suis pas sûr de ce que sera l', c'est pourquoi je le laisse. Il ressemble à ceci
<?php namespace App\Http\Controllers;
je pense qu'ils viennent avec des L5 en tant que par défaut. Donc, ne vous suggérons de prendre off namespace App\Http\Controllers;
, Sera-ce l'effet de quelque chose ? Je ne l'espère pas.J'ai essayé de l'enlever, et de voir ce message d'erreur :
The use statement with non-compound name 'Input' has no effect
OriginalL'auteur kyo | 2015-04-21
Vous devez vous connecter pour publier un commentaire.
Voici un aperçu de haut niveau de comment les espaces de travail en PHP pour tenter et de vous aider à comprendre cela et de vous donner une solution à votre problème.
OriginalL'auteur David Barker
Vous pouvez l'essayer, il suffit de l'utiliser :
OriginalL'auteur Inspire Shahin
Utilisation
App\Subscribe;
.Ensuite, vous pouvez utiliser
$subscribe = new Subscribe;
dans votre code.OriginalL'auteur Alp Altunel