如何在不更新实际数据库的情况下更改 DBIx::Class 对象值
How can I alter a DBIx::Class object value without updating the actual DB
我正在检查我的一个应用程序中是否存在不匹配的用户名。
如果它发现不匹配的用户名,我会将值包装在 <mark>
标签中。
我想在将 DBIx::Class 对象的用户名值传回我的 JS 之前更新它。
我目前有以下内容,这几乎是我想要的,但不完全是。
my $mismatch_username = check_for_mismatch_username($self, $id, 'AD');
if(defined $mismatch_username)
{
my $flagged_username = "<mark>".$info->accountname."</mark> <font color=\"red\">(Mismatch: $mismatch_username)</font>";
$info->update({accountname => $flagged_username});
}
$info = {$info->get_columns};
$self->render(json => {info => $info});
重要的是我没有更新数据库值。我只想更新变量的值。我目前仍在浏览 DBIx::Class 文档。
不胜感激。
如果您不想修改对象,请不要修改它。
(当然,您可以使用 $info->accountname(…)
更新字段而不保存它。但这仍然会使对象处于修改状态,其他代码可能会保存它。它也可能如果 HTML 标记被字段上的验证器拒绝,则失败。)
如果您真正需要的只是更改 JSON 中的用户名,请先生成将进入 JSON 的数据,然后在呈现数据之前更新数据中的相应字段:
my $data = { $info->get_columns };
if (defined $mismatch_username) {
$data->{accountname} = "<mark>…";
}
$self->render(json => { info => $data });
我正在检查我的一个应用程序中是否存在不匹配的用户名。
如果它发现不匹配的用户名,我会将值包装在 <mark>
标签中。
我想在将 DBIx::Class 对象的用户名值传回我的 JS 之前更新它。
我目前有以下内容,这几乎是我想要的,但不完全是。
my $mismatch_username = check_for_mismatch_username($self, $id, 'AD');
if(defined $mismatch_username)
{
my $flagged_username = "<mark>".$info->accountname."</mark> <font color=\"red\">(Mismatch: $mismatch_username)</font>";
$info->update({accountname => $flagged_username});
}
$info = {$info->get_columns};
$self->render(json => {info => $info});
重要的是我没有更新数据库值。我只想更新变量的值。我目前仍在浏览 DBIx::Class 文档。
不胜感激。
如果您不想修改对象,请不要修改它。
(当然,您可以使用 $info->accountname(…)
更新字段而不保存它。但这仍然会使对象处于修改状态,其他代码可能会保存它。它也可能如果 HTML 标记被字段上的验证器拒绝,则失败。)
如果您真正需要的只是更改 JSON 中的用户名,请先生成将进入 JSON 的数据,然后在呈现数据之前更新数据中的相应字段:
my $data = { $info->get_columns };
if (defined $mismatch_username) {
$data->{accountname} = "<mark>…";
}
$self->render(json => { info => $data });