简体   繁体   English

laravel 4.2-未定义的变量

[英]laravel 4.2 - Undefined variable

I want to save the state of my item in the database: 我想将我的item的状态保存在数据库中:

My migration looks like that: 我的迁移看起来像这样:

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');
    }

}

In my Items model I can mark my item as done or undone: 在我的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();
    }

}

In my Controller I am using the postIndex method to set my item: 在我的Controller我正在使用postIndex方法来设置我的项目:

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

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

However, I get an error: 但是,我得到一个错误:

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

Any recommendations how I can change my code to make it work? 有什么建议可以更改代码以使其正常工作吗? Furthermore, why does this not work? 此外,为什么这不起作用?

I appreciate your answers! 感谢您的回答!

I think this line of code is giving you the problem (in your mark() function) 我认为这行代码给您带来了问题(在您的mark()函数中)

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

Get rid of the $ sign in front of done 在完成之前摆脱$符号

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM