如何 return 模型质量分配的默认列值?
How to return a default column value for mass assignment of a model?
我正在使用批量分配创建服务器模型,如下所示:
/** @var Model $server */
$server = Server::create($request->all());
return response($server->jsonSerialize(), Response::HTTP_CREATED);
现在我的服务器也有一个 status
属性 映射到 MySQL status
列,该列在 MySQL 中的默认值为 0。
因为状态没有在我的请求属性中隐式设置(不需要,因为默认设置很好)它不会 return 模型上的 status
属性。不过,它将 return 我的 $request->all()
中的所有属性。这些已经过验证并来自表格。
如何 return 我的完整 $server
模型包括 status
的默认值?我被迫启动另一个查询以重新获取我刚刚创建的模型,这样我也可以将 status
属性 包含在 MySQL 默认值中?
如果您return将其设为JSON
,您可以将status
添加到protected $appends = ["status"];
class Server extends Model {
protected $appends = ["status"];
...
}
这样,即使您没有在 Server::create()
方法中设置 status
,它 应该 仍然在您的 [=13= 中可见] 响应为 server.status
。另外,也许将 return 调整为
return response()->json(["server" => $server], 200); // or whatever HTTP code you need.
因为 $appends
只适用于 accessors
,也许使用 $request->merge()
到 "fill in the gaps" 来获取你想要 return 在你的 JSON 中编辑的数据回应:
$request->merge([
"status" => "active", // Or whatever the default is from the database
...
]);
由于响应是 returning $request->all()
中的所有内容,因此将其与 MySQL 中的默认值合并。注意:目前是硬编码的,如果 migration/schema 更改,或通过 SQL 命令获取默认值,则需要更新。
它不会在插入后执行选择,因此您不会获得数据库必须自行设置的任何值。您可以刷新模型实例(使其变为 select 该行):
$model->refresh();
我正在使用批量分配创建服务器模型,如下所示:
/** @var Model $server */
$server = Server::create($request->all());
return response($server->jsonSerialize(), Response::HTTP_CREATED);
现在我的服务器也有一个 status
属性 映射到 MySQL status
列,该列在 MySQL 中的默认值为 0。
因为状态没有在我的请求属性中隐式设置(不需要,因为默认设置很好)它不会 return 模型上的 status
属性。不过,它将 return 我的 $request->all()
中的所有属性。这些已经过验证并来自表格。
如何 return 我的完整 $server
模型包括 status
的默认值?我被迫启动另一个查询以重新获取我刚刚创建的模型,这样我也可以将 status
属性 包含在 MySQL 默认值中?
如果您return将其设为JSON
,您可以将status
添加到protected $appends = ["status"];
class Server extends Model {
protected $appends = ["status"];
...
}
这样,即使您没有在 Server::create()
方法中设置 status
,它 应该 仍然在您的 [=13= 中可见] 响应为 server.status
。另外,也许将 return 调整为
return response()->json(["server" => $server], 200); // or whatever HTTP code you need.
因为 $appends
只适用于 accessors
,也许使用 $request->merge()
到 "fill in the gaps" 来获取你想要 return 在你的 JSON 中编辑的数据回应:
$request->merge([
"status" => "active", // Or whatever the default is from the database
...
]);
由于响应是 returning $request->all()
中的所有内容,因此将其与 MySQL 中的默认值合并。注意:目前是硬编码的,如果 migration/schema 更改,或通过 SQL 命令获取默认值,则需要更新。
它不会在插入后执行选择,因此您不会获得数据库必须自行设置的任何值。您可以刷新模型实例(使其变为 select 该行):
$model->refresh();