Premier
J'ai écrit un script de migration.
Seconde
J'exécute le php artisan migrate
pour migrer la table dans ma base de données.
Base de données
Maintenant, j'ai une table subscribes
dans ma base de données. Il comporte 2 champs: id
et email
.
Itinéraire
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);
}
}
Manette
<?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
Des questions
Pourquoi je ne peux pas faire $subscribe = new Subscribe;
?
Quelle est la meilleure pratique pour insérer data dans la base de données en utilisant Laravel 5?
Mettre à jour
Merci à Mark Baker. Il semble que j'ai un problème avec mon espace de noms.
Ce nom d'espacement est un peu déroutant pour moi en ce moment. Est-ce que quelqu'un s'il vous plaît peut clarifier ou expliquer cela?
Tout est apprécié.
Merci d'avance.
Voici un aperçu détaillé du fonctionnement des espaces de nom dans PHP pour vous aider à comprendre cela et vous proposer une solution à votre problème.
<?php
// This is the namespace of this file, as Laravel 5 uses PSR-4 and the
// App namespace is mapped to the folder 'app' the folder structure is
// app/Http/Controllers
namespace App\Http\Controllers;
// Use statements. You can include classes you wish to use without having
// to reference them by namespace when you use them further on in this
// namespaces scope.
use App\Subscribe;
class MyController extends BaseController
{
public function postSubscribe()
{
// You can now use the Subscribe model without its namespace
// as you referenced it by its namespace in a use statement.
$subscribe = new Subscribe();
// If you want to use a class that is not referenced in a use
// statement then you must reference it by its full namespace.
$otherModel = new \App\Models\Other\Namespace\OtherModel();
// Note the prefixed \ to App. This denotes that PHP should get this
// class from the root namespace. If you leave this off, you will
// reference a namespace relative to the current namespace.
}
}
Vous pouvez essayer ceci, utilisez-le simplement:
$subscribe = new App\Subscribe;
Utilisez App\Subscribe;
.
Ensuite, vous pouvez utiliser $subscribe = new Subscribe;
dans votre code.