问题标签 [revisionable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6608 浏览

php - 如何在 Laravel 中实现模型修订?

这个问题是针对我用 PHP 编写的 pastebin 应用程序。

我做了一些研究,尽管我无法找到符合我需求的解决方案。我有一个具有这种结构的表:

这适用于 pastebin 应用程序。我基本上想要粘贴修订,因此如果您打开粘贴 #1234,它会显示该粘贴的所有过去修订。

我想到了三种方法:

方法一

有一个带有 id 和 old_id 或其他东西的修订表,对于每个 ID,我会插入所有旧修订,所以如果我的结构如下所示:

该表将包含以下数据:

我遇到的问题是它引入了很多重复数据。而且修订越多,它不仅有更多的数据,而且我需要为每个新粘贴到修订表做 N 次插入,这对于大 N 来说并不是很好。

方法二

我可以在顶部的粘贴表中添加一个 child_id 并对其进行更新。然后,在获取粘贴时,我将继续查询数据库中的每个 child_id 及其 child_id 等等……但问题是,每次打开带有许多修订的粘贴时,都会引入过多的数据库读取。

方法三

还涉及一个单独的修订表,但对于与方法 1 相同的场景,它将像这样存储数据:

当有人打开粘贴 1234 时,我将使用 IN 子句来获取那里的所有子粘贴数据。

哪个是最好的方法?还是有更好的方法?我正在使用具有 Eloquent ORM 的 Laravel 4 框架。

编辑:我可以使用 oneToMany 关系执行方法 1 吗?我知道我可以使用Eager Loading来获取所有修订,但是如何插入它们而不必进行肮脏的破解?

编辑:我想出了如何处理上述问题。我将添加一个答案来结束这个问题。

0 投票
3 回答
21476 浏览

php - 在 Laravel 中扩展多个类

我被卡住了,因为 Php 本身不允许扩展多个类,我正在使用 laravel 模型与数据交互,并希望使用 2 个不同的包来扩展它的功能。

我正在尝试使用Ardent验证器和Revisionable来维护更新历史记录,但我不确定如何在我的模型中扩展这两个类。

任何帮助将不胜感激。

0 投票
1 回答
1808 浏览

php - Laravel Query Builder 在 MySQL 中使用变量进行复杂选择?

如何使用一个 mysql 请求执行此操作:

$this->Revision = 雄辩的模型;

其他只是列。

0 投票
2 回答
1525 浏览

laravel-4 - Laravel 4 Versionable Package 错误:找不到类“MyApp\Models\Eloquent”

我正在尝试在我的 Laravel 4 应用程序中使用基于新的、基于特征的实现的 Versionable 包,如下所示

当我使用上面的代码时,我得到了这个错误

我也尝试将命名空间更改为 app\models 但它仍然显示未找到错误。

请问有人可以帮我吗?我遵循了 Github 页面上的所有说明,但由于我是 Laravel 的新手,我可能会遗漏一些东西。

0 投票
1 回答
1489 浏览

laravel - 使用 VentureCraft/revisionable 保持修订历史

我必须显示在我的应用程序中所做的更改历史记录(例如更新、插入-> 执行者、更改的字段和时间)。我正在使用 laravel 4,我也下载了这个。但问题是我不清楚如何使用它。将文件夹 VentureCraft 放在哪里?以及如何获取执行该操作的人的用户名或 ID。有没有其他方法可以跟踪 laravel 中的历史记录?

编辑:

汽车模型

看法

它显示:未定义的变量:描述

我在控制器中遗漏了什么吗?

0 投票
2 回答
1355 浏览

php - 未找到特征“Venturecraft\Revisionable\RevisionableTrait”

我正在使用 laravel 4,我想跟踪对表进行的所有事务的历史记录。我按照这些步骤

  1. "venturecraft/revisionable": "1.*"在 composer.json添加
  2. php composer.phar update
  3. 在我的项目的根目录中运行:

    php artisan migrate --package=venturecraft/revisionable

它说“没有什么可以迁移”

然后我从我的应用程序/数据库文件夹中的包中复制了迁移文件,并将类名从 CreateRevisionsTable 更改为类似于 CreateRevisionTable 的名称,并且该表是在我的数据库中创建的。然后我在我的汽车模型中添加了这个:

1.

然后在我的控制器中:

然后在我看来:

作曲家.json

结果是:

我错过了什么?

0 投票
2 回答
976 浏览

php - 我怎样才能让我的特质扩展一个类

我知道根据定义,特征不能扩展类,但是我想知道是否有某种解决方法。

我的情况:

我创建了包revisionable,它的第一个化身是一个你从模型扩展的类,它本身扩展了 Laravel 基本 Eloquent 类,但是随着时间的推移,有很多请求将其更改为特征,因此人们可以use修改,并且能够扩展自己的基类。

目前,我能想到的唯一同时允许可扩展类和特征的方法是将两者作为一个整体文件提供,这意味着我在两个文件中重复整个代码,这很容易导致麻烦.

我想知道是否有人知道一些解决方案,我可以拥有一个是上帝的文件,而另一个文件依赖于它。

规则

  • 现有类不能使用特征,因为 php 5.3 上包的现有用户将无法访问特征。
0 投票
1 回答
661 浏览

php - 在模型上使用 `boot()` 与 RevisionableTrait 冲突

我在我的 laravel 应用程序中使用Revisionable包来记录对模型的编辑。

此外,我还实现了一个观察者类来监听特定的模型事件(更新、删除、创建等)并执行操作(例如清除缓存等)。该观察者使用boot()如下方法在模型中实例化:

我发现当我boot()在模型中定义一个方法时,Revisionable Trait 停止工作并且不记录更改——大概是因为它也使用了boot被模型中的方法覆盖的方法。

我将如何解决这个问题以允许侦听模型事件以及利用 Revisionable 包?

0 投票
1 回答
456 浏览

php - 从可修订版获取模型“identifiableName()”

在可修订包identifiableName()中,可以通过在模型上定义方法,将字段设置为 display 而不是 id来获取相关模型的可识别名称 。例如“名称”或“标题”。

是否可以对不相关的模型做类似的事情。所以说我得到了某个模型的所有修订。例如

我怎样才能得到每个修订identifiableName的版本?post

我已经可以获取帖子 ID,$revision->revisionable_id但我似乎无法找到一种方法来获取帖子名称,而没有类似的东西Post::find($revision->revisionable_id)->name对于大量修订列表来说是昂贵的。

0 投票
2 回答
1569 浏览

php - 具有一对多关系的 Laravel 可修改模型

可修订是否可以跟踪一对多关系的更改?例如:

型号:用户。模型:帖子。用户模型使用 Venturecraft\Revisionable\RevisionableTrait;并与 Posts 有 hasMany 关系。如果添加或更新了帖子,是否可以通过该帖子所属的用户下的可修订来跟踪?

提前致谢