Laravel模型在创建后不返回默认值的属性

时间:2019-11-20 12:42:44

标签: php laravel

在创建新帖子后,在控制器中,我将新帖子返回到post变量中。由于某种原因,我没有获得具有默认值的属性。我注意到,如果我将值设置为控制器中的某个值,则确实会返回有效负载中的属性。

public function create(Request $request)
    {
        $validatedData = $request->validate(PostValidator::$create);

        $post = new Post();
        $post->postcategory_id = $request->input('postcategoryid');
        $post->user_id = $request->input('authorid');
        $post->thumbnail = $this->uploadFile($request, 'thumbnail', config('app.defaultImage'));
        $post->video = $request->input('video');
        $post->slug = $this->slugify($request->input('title'));
        $post->url = '/publicaciones/'.$this->slugify($request->input('title'));
        $post->title = $request->input('title');
        $post->body = $request->input('body');
        $post->isVisible = false; //IF I DO THIS isVisible is returned in $post variable
        $post->save();

        $post->load(['postcategory','author']);

        return response()->json([
            'post' => $post,
        ]);

    }

1 个答案:

答案 0 :(得分:1)

您可以说laravel就是这样。新创建的对象中没有数据库层中定义的默认值。但是,您可以使用refresh刷新对象,然后再返回。然后它将缺少值。

1

或者您可以在模型层中设置默认值

$post = new Post();
$post->attribute = $request->attribute;
$post->save();

$post = $post->refresh();
return $post;

,并且在返回新创建的对象时将具有默认值。