这是我保存帖子的存储方法。
public function store(CreatePostRequest $request)
{
$post = new Post([
'title' => $request['title'],
'content' => Crypt::encrypt($request['content']),
'published_at' => Carbon::now()
]);
$post->user()->associate(Auth::user());
$newPost=Post::create($post->toArray());
$this->syncTags($newPost, $request['tag_list']);
return redirect('posts')->withMessage('Post Saved Successfully !!!');
}
在laracasts教程中,他只是在做
Article::create($request->all());
我需要做一些额外的事情,比如加密,但我是不是把方法弄得一团糟?它能更干净吗?
在模型中执行。我使用set/get*Attribute()方法来动态更改内容。
因此,您可以使用Article::create($request->all());
,然后在模型中使用可填充数组只自动填充允许的内容(如标题、内容和published_at)。
然后使用类似(在模型中)的东西
function setContentAttribute( $value ){
$this->attributes['content'] = Crypt::encrypt($value);
}
事实上,您还可以调整这种方法,以便将published_at属性设置为today,或者更好地使用数据库来提供now()
的时间。