webentwicklung-frage-antwort-db.com.de

Speichern Sie die Daten in der Datenbank in Laravel 5

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.

enter image description here


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

enter image description here


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.

9
kyo

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.
    }
}
8
David Barker

Sie können es versuchen, einfach verwenden:

$subscribe        = new App\Subscribe;
1
Inspire Shahin

Verwenden Sie App\Subscribe;.

Dann können Sie $subscribe = new Subscribe; in Ihrem Code verwenden.

0
Alp Altunel