【问题标题】:revisionHistory is showing for some models but not othersrevisionHistory 显示某些模型,但不显示其他模型
【发布时间】:2016-03-17 01:54:39
【问题描述】:

我检查了数据库中的修订表,它们是我试图显示历史记录的修订记录。

$record->revisionHistory 虽然返回一个空数组。

同样的代码,其他模型也能正常工作,真是奇怪。

此模型代码有效:

namespace App\Models\Slack;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes as SoftDeletes;

class Channel extends Model
{
    use SoftDeletes;
    use \Venturecraft\Revisionable\RevisionableTrait;

    protected $revisionEnabled = true;
    protected $revisionCleanup = true;
    protected $historyLimit = 10;
    protected $revisionCreationsEnabled = true;

上述模型的控制器代码有效:

$channel = Channel::find($id);
return $channel->revisionHistory;

此型号代码不起作用(但数据库中有记录):

namespace App\Models\Organization;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes as SoftDeletes;

class Organization extends Model
{
    use SoftDeletes;
    use \Venturecraft\Revisionable\RevisionableTrait;

    protected $revisionEnabled = true;
    protected $revisionCleanup = true;
    protected $historyLimit = 10;
    protected $revisionCreationsEnabled = true;

上面模型的这个控制器代码显示一个空数组([]):

$organization = Organization::find($id);
return $organization->revisionHistory;

【问题讨论】:

  • 在您的第一个示例中,两行都使用$channel。在您的第二个中,第一行使用$organization,第二行使用$organization_history。试试$organization->revisionHistory。
  • 感谢您看到这一点,但这是我在举这个例子时的一个错字。当我进行更改时,它仍然无法正常工作。
  • 试试$organization->revisionHistory()->toSql()看看生成了什么SQL。然后尝试自己直接针对 SQL 运行查询。
  • @ceejayoz 我运行了它,它确实显示了一些 SQL,工作模型和不工作模型的 SQL 都是相同的。 select * from "revisions" where "revisions"."revisionable_id" = ?并且 "revisions"."revisionable_id" 不为空并且 "revisions"."revisionable_type" = ?有没有办法查看传入的参数?我手动放置它们,它确实返回了一条记录: select * from "revisions" where "revisions"."revisionable_id" = 1 and "revisions"."revisionable_id" is not null and "revisions"."revisionable_type" = 'App\模型\组织\组织';
  • 我相信$organization->revisionHistory()->getBindings() 会给你传递给? 的值。

标签: laravel revisionable


【解决方案1】:

我的 AppServiceProvider 启动方法中有一个 morphMap 设置,当可修订调用记录时会触发它,这就是为什么没有返回任何内容的原因。我将关闭它并提出一个更相关的新问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    相关资源
    最近更新 更多