如何为模型的mass赋值返回默认列值?

qco9c6ql  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(331)

我使用mass assignment创建一个服务器模型,如下所示:

/**@var Model $server */
$server = Server::create($request->all());

return response($server->jsonSerialize(), Response::HTTP_CREATED);

现在我的服务器也有一个 status Map到mysql的属性 status mysql中默认值为0的列。
因为没有在我的请求属性中隐式地设置状态(因为默认值很好,所以不需要),所以它不会返回 status 属性。它将返回我的 $request->all() 不过。这些都是经过验证的,并且来自一个表单。
我怎样才能归还我的全部财产 $server 包含默认值的模型 status ? 我不得不启动另一个查询来重新获取刚刚创建的模型,这样我就可以包含 status 属性是否为mysql默认值?

pepwfjgg

pepwfjgg1#

它不会在插入之后执行selecet,因此您不会得到db必须自行设置的任何值。但您可以刷新模型示例(使其选择该行):

$model->refresh();
z4iuyo4d

z4iuyo4d2#

如果你把它当作 JSON ,您可以添加 statusprotected $appends = ["status"]; ```
class Server extends Model {
protected $appends = ["status"];
...
}

那样的话,即使你不 `status` 在你的 `Server::create()` 方法,它应该仍然在您的 `JSON` 响应为 `server.status` . 另外,也许调整一下你的回报率

return response()->json(["server" => $server], 200); // or whatever HTTP code you need.

自 `$appends` 仅适用于 `accessors` ,也许用 `$request->merge()` 要在json响应中“填补空白”,请执行以下操作:

$request->merge([
"status" => "active", // Or whatever the default is from the database
...
]);

因为React是返回所有的东西 `$request->all()` ,将其与mysql中的默认值合并。注意:当前是硬编码的,如果迁移/模式发生更改,则需要更新,或者通过sql命令获取默认值。

相关问题