2016-10-20 35 views
2

我有一个表,列ID。我想为同一列创建一个访问器。Laravel Accessor for ID列

型号。

protected $table = 'repair_category'; 
protected $fillable = ['ID,','Name','Active','Background_Color','Icon_File_Name','ListOrder']; 
protected $primaryKey = 'ID'; 

我试图

public function getIDAttribute($value) 
{ 
    return Crypt::encrypt($value); 
} 

public function getIdAttribute($value) 
{ 
    return Crypt::encrypt($value); 
} 

但它不工作。

任何人都请提出解决此问题的方法。

+0

究竟什么是你的主键,你怎么在你的模型中定义它的属性[]? –

+0

我认为你的数据库有一个设计问题:你的主键只能是一个整数,并且是唯一的。加密的内容可能会产生冲突(两个不同的元素会产生相同的散列),所以这不是一个独特的元素。 为什么你不能为加密内容制作另一列? 另外,为什么你需要隐藏你的ID? –

+0

@MarcBrillault,我想从浏览器中完全隐藏表行的PK。所以我想从表格中加入ID。当我将PK列更改为id时,我可以得到结果,但我不希望更改列名。 – Jishad

回答

0

尝试从$这个 - >读存取方法

protected $primaryKey = 'ID'; 

public function getIDAttribute() 
{ 
    return Crypt::encrypt($this->attributes['ID']); 
} 
+0

没有与您的答案一起工作,没有加密就返回。 – Jishad

+0

有点奇怪,因为它很适合我 - 你能否添加一段代码让你觉得它不起作用?和顺便说一句。我刚在你的'可填写'中发现了一个错字。实际上,如果它是自动增加的,它不应该有“身份证”,但它也有一个尾随的昏迷。 –