web-dev-qa-db-ja.com

Laravel 5のデータベースにデータを保存します

最初

移行スクリプトを書きました。


2番目

_php artisan migrate_を実行して、テーブルをデータベースに移行します。


データベース

現在、データベースにsubscribesテーブルがあります。 idemailの2つのフィールドがあります。

enter image description here


ルート

Route::post('/subscribe', array('as' =>'subscribe','uses'=>'AccountController@postSubscribe'));


モデル

_<?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);
    }

}
_

コントローラ

_<?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.');

        }
}

?>
_

エラー

enter image description here


質問

_$subscribe = new Subscribe;_を実行できないのはなぜですか?

Laravel 5を使用してデータベースにデータを挿入データするためのベストプラクティスは何ですか?


更新

@Mark Ba​​kerに感謝します。名前空間に問題があるようです。

この名前空間は、今の私には少し混乱しています。誰か-お願いそれを少し明確にしたり説明したりできますか?

何でも大歓迎です。

前もって感謝します。

9
cyber8200

これは、名前空間がPHP=でどのように機能するかを高レベルで概説したもので、これを理解し、問題の解決策を提供するためのものです。

<?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

あなたはこれを試すことができます、単にそれを使用してください:

$subscribe        = new App\Subscribe;
1
Inspire Shahin

使用する App\Subscribe;

次に、$subscribe = new Subscribe;コード内。

0
Alp Altunel