当前位置: 首页 > 知识库问答 >
问题:

如何在更新laravel后检索表中列的旧值

秦焱
2023-03-14

我想知道这是否可能。在我的项目中,用户可以更新表的列值。但是其他用户在14天内看不到更新的值。在每次检索操作中将填充最多14天的旧值。有可能在laravel做吗?

共有2个答案

闻人杰
2023-03-14

只有一种方法,您需要存储这两个值。以price列为例。我们可以在模型中定义访问器

有两列price

public function getPriceAttribute($value)
{
    if($this->updated_at < Carbon::now()->subWeeks(2)) { // 14 days check
        return $this->old_price;
    }
    return $value;
}

然后你可以使用它作为

$product->price;
党宇定
2023-03-14

您需要使用缓存或在表上添加另一个名为old\u column的列,然后在模型中可以包含一个getter/accessor来检查行上的updated\u时间戳,然后返回新/旧值。

    public function getColumnAttribute($value)
    {
        if($this->updated_at < Carbon::now()->subWeeks(2)) {
            return $this->old_column;
        }
        return $value;
    }

请注意,由于您不清楚自己的列名,因此我将其命名为:

columnold\u column,模型上的函数名应该是get{column name}属性

见:https://laravel.com/docs/8.x/eloquent-mutators#defining-an-accessor

请注意,如果您希望编辑值的用户看到更改,则必须在表中包含user_id。但是在这一点上,您不会保留更改的所有权,最好制作一个diff样式表,将所有这些更改作为日志存储。

 类似资料:
  • 我正在检索数据库值并将其放入数组列表(al)。该数组列表以表的形式显示在JSP页面中。我想修改JSP页面中的值,并使用Struts2更新数据库中的新值。我该怎么做? 主要行动类 这是POJO班 这是显示数组列表的JSP页面

  • 我试图在一个路由上调用一个AJAX请求,该路由在UserController中调用这个函数updateImpression(),这个函数试图增加MySQL中存储的“users”表中名为“impressions\u cpunt”的计数器列。我试着使用Eloquent只更新一个特定用户的列。 我认为save()函数应该首先工作,但是我的数据库没有得到更新并返回原始计数,update()函数甚至没有从函

  • 我明白我需要用硒,但我不知道怎么用。结果始终是单个字符串的列表。理想情况下,我希望返回两个列表:一个带有unix datestamp(option value=“1576627200”),另一个带有“normal”日期(即18/12/2019)的列表。 任何帮助都将不胜感激。

  • 我在我的网站上有两步注册,我正在尝试更新数据栏中的用户信息数据。第一步是用户名和姓氏,第二步我尝试在JSON列中插入额外的数据。这是我的第二步更新: 但是这覆盖了我在第一步插入的旧数据。

  • 当我想用帖子的现有标签编辑帖子时,它只显示一个标签,尽管所选帖子中有更多标签。我还想在后期编辑刀片中输入新标签。 后期创建代码 **post控制器中的post更新代码** **后期编辑刀片的标签代码**

  • 问题内容: 我有这个: 有没有一种方法可以获取更新的列表作为结果,而不是就地更新原始列表? 问题答案: 我得到的最短信息: