Zuerst
Ich habe ein Migrationsskript geschrieben.
Zweite
Ich führe den php artisan migrate
aus, um die Tabelle in meine Datenbank zu migrieren.
Datenbank
Jetzt habe ich eine subscribes
Tabelle in meiner Datenbank. Es hat 2 Felder: id
und email
.
Route
Route::post('/subscribe', array('as' =>'subscribe','uses'=>'[email protected]'));
Model
<?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);
}
}
Controller
<?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.');
}
}
?>
Error
Fragen
Warum kann ich $subscribe = new Subscribe;
nicht machen?
Was ist die beste Vorgehensweise zum Einfügen von Daten in eine Datenbank mit Laravel 5?
Update
Vielen Dank an @ Mark Baker. Es scheint, dass ich ein Problem mit meinem Namespace habe.
Dieser Namensraum ist für mich momentan etwas verwirrend. Kann jemand bitte das etwas klären oder erklären?
Alles wird geschätzt.
Danke im Voraus.
Hier finden Sie eine allgemeine Übersicht über die Funktionsweise von Namespaces in PHP, um zu versuchen, dies zu verstehen und Ihnen eine Lösung für Ihr Problem zu geben.
<?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.
}
}
Sie können es versuchen, einfach verwenden:
$subscribe = new App\Subscribe;
Verwenden Sie App\Subscribe;
.
Dann können Sie $subscribe = new Subscribe;
in Ihrem Code verwenden.