简化laravel 5上的存储控制器方法



这是我保存帖子的存储方法。

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()的时间。

最新更新