2016-10-20 11 views
2

私はカラムがIDのテーブルを持っています。私は同じ列のアクセサを作成したい。Laravelアクセサリー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

データベースにはデザイン上の問題があると思います。プライマリキーは整数でなければならず、一意でなければなりません。暗号化されたコンテンツは衝突(同じハッシュを生成する2つの異なる要素)を生成する可能性があるため、これは一意の要素ではありません。 なぜ暗号化されたコンテンツに対して別の列を作成できないのですか? また、なぜIDを暗号化する必要がありますか? –

+0

@MarcBrillault、テーブル行のPKをブラウザから完全に隠したいと思っています。私はテーブルからIDを暗号化したいので。私はIDにPK列を変更するときに結果を得ることができますが、私は列名を変更したくないです。 – Jishad

答えて

0

はの$ this - >からの読み取りみアクセサメソッド

protected $primaryKey = 'ID'; 

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

あなたの答えは、暗号化せずに戻りません。 – Jishad

+0

奇妙なことに、私にとってうまくいっている - あなたはそれが動作していないと思うコードを追加できますか?そして、BTW。私はちょうどあなたの 'fillable'のタイプミスを発見しました。実際には、自動インクリメントの場合は「ID」はないはずですが、後に昏睡状態になります。 –

関連する問題