我想在数据库中保存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
有关我如何更改代码以使其正常工作的任何建议?此外,为什么这不起作用?
感谢您的回答!
答案 0 :(得分:2)
我认为这行代码可以解决问题(在你的mark()函数中)
$this->$done = $this->done ? false : true;
摆脱前面的$符号
$this->done = $this->done ? false : true;