【发布时间】:2018-09-24 21:15:49
【问题描述】:
我试图通过控制器简单地将模型保存到数据库中,而不直接设置字段,而是将它们设置在所述对象的构造函数中。
这是处理逻辑的类。如果注释掉的行
//$todoItem->item = $todo; 未注释,它工作正常并将 $todo 中输入的任何内容保存在数据库中。但是,我想在任务对象的构造函数中设置该值,而不需要手动指定它。我发现了这个问题:Laravel with Eloquent doesn't save model properties on database 建议我可以将属性设置为受保护并让它工作,但仍然不行。
NewTodo.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class NewTodo extends Controller
{
public function saveTodoItem(Request $request)
{
$todo = $request->input('content');
$todoItem = new \App\Task($todo);
//$todoItem->item = $todo;
$todoItem->save();
return view('testview', ['name' => $todoItem->getItem()]);
}
}
Task.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
protected $item = null;
function __construct($newItem)
{
$this->item = $newItem;
}
function getItem()
{
return $this->item;
}
}
总结,数据库条目被存储为空白,除非在构造函数中设置 $todo->item 时手动设置 $todo->item。
【问题讨论】: