簡體   English   中英

laravel 4.2-未定義的變量

[英]laravel 4.2 - Undefined variable

我想將我的item的狀態保存在數據庫中:

我的遷移看起來像這樣:

class CreateItemsTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('items', function(Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->boolean('done');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('items');
    }

}

在我的Items模型中,我可以將我的項目標記為完成或撤消:

class Items extends Eloquent {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'items';

    public function mark() {
        $this->$done = $this->done ? false : true;
        $this->save();
    }

}

在我的Controller我正在使用postIndex方法來設置我的項目:

public function postIndex() {
    $id = Input::get('id');
    $item = Items::findOrFail($id);
    $item->mark();

    return Redirect::route('home');
}   

但是,我得到一個錯誤:

ErrorException thrown with message "Undefined variable: done"

Stacktrace:
#20 ErrorException in C:\xampp\htdocs\laravel_project\todo-lara\app\models\Items.php:18
#19 Illuminate\Exception\Handler:handleError in C:\xampp\htdocs\laravel_project\todo-lara\app\models\Items.php:18
#18 Items:mark in C:\xampp\htdocs\laravel_project\todo-lara\app\controllers\HomeController.php:16
#17 HomeController:postIndex in <#unknown>:0
#16 call_user_func_array in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Routing\Controller.php:231
#15 Illuminate\Routing\Controller:callAction in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php:93
#14 Illuminate\Routing\ControllerDispatcher:call in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php:62
#13 Illuminate\Routing\ControllerDispatcher:dispatch in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Routing\Router.php:962
#12 Illuminate\Routing\Router:Illuminate\Routing\{closure} in <#unknown>:0
#11 call_user_func_array in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Routing\Route.php:109
#10 Illuminate\Routing\Route:run in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Routing\Router.php:1028
#9 Illuminate\Routing\Router:dispatchToRoute in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Routing\Router.php:996
#8 Illuminate\Routing\Router:dispatch in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:775
#7 Illuminate\Foundation\Application:dispatch in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:745
#6 Illuminate\Foundation\Application:handle in C:\xampp\htdocs\laravel_project\todo-lara\vendor\barryvdh\laravel-debugbar\src\Middleware\Stack.php:34
#5 Barryvdh\Debugbar\Middleware\Stack:handle in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Session\Middleware.php:72
#4 Illuminate\Session\Middleware:handle in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Cookie\Queue.php:47
#3 Illuminate\Cookie\Queue:handle in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Cookie\Guard.php:51
#2 Illuminate\Cookie\Guard:handle in C:\xampp\htdocs\laravel_project\todo-lara\vendor\stack\builder\src\Stack\StackedHttpKernel.php:23
#1 Stack\StackedHttpKernel:handle in C:\xampp\htdocs\laravel_project\todo-lara\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:641
#0 Illuminate\Foundation\Application:run in C:\xampp\htdocs\laravel_project\todo-lara\public\index.php:49

有什么建議可以更改代碼以使其正常工作嗎? 此外,為什么這不起作用?

感謝您的回答!

我認為這行代碼給您帶來了問題(在您的mark()函數中)

$this->$done = $this->done ? false : true;

在完成之前擺脫$符號

$this->done = $this->done ? false : true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM