2016-10-20 57 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

有點奇怪,因爲它很適合我 - 你能否添加一段代碼讓你覺得它不起作用?和順便說一句。我剛在你的'可填寫'中發現了一個錯字。實際上,如果它是自動增加的,它不應該有「身份證」,但它也有一個尾隨的昏迷。 –