【发布时间】: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