【发布时间】:2014-12-01 01:08:11
【问题描述】:
我想将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
有什么建议可以更改我的代码以使其正常工作吗?此外,为什么这不起作用?
感谢您的回答!
【问题讨论】: