Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ID列的Laravel访问器_Php_Eloquent_Laravel 5.3 - Fatal编程技术网

Php ID列的Laravel访问器

Php ID列的Laravel访问器,php,eloquent,laravel-5.3,Php,Eloquent,Laravel 5.3,我有一个列ID为的表。我想为同一列创建一个访问器 模型 protected $table = 'repair_category'; protected $fillable = ['ID,','Name','Active','Background_Color','Icon_File_Name','ListOrder']; protected $primaryKey = 'ID'; 我试过了 public function getIDAttribute($value) { return C

我有一个列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);
}

但它不起作用


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

尝试在访问器方法中读取$this->attributes[]

protected $primaryKey = 'ID';

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

那么您的主键是什么?您如何在模型中定义它?我认为您的数据库存在一个设计问题:您的主键应该是一个整数,并且是唯一的。加密内容可能会产生冲突(两个不同的元素生成相同的哈希),因此这不是唯一的元素。为什么不能为加密的内容制作另一列?还有:为什么你需要加密你的ID?@MarcBrillault,我想对浏览器完全隐藏表行的PK。所以我想对表中的ID进行加密。当我将PK列更改为id时,我可以得到结果,但我不希望更改列名。因此,为什么不在另一列中生成加密内容,并在路由和控制器方法中使用此列,而不是主键?请参阅,我可以在返回视图之前通过处理数组获得解决方案,并将ID加密。但由于代码质量的原因,我更喜欢Laravel访问器方法。所以我请求你以任何可能的方式来实现我的想法。不使用你的答案,它会在不加密的情况下返回。有点奇怪,因为它对我很有效-你能添加一段代码让你认为它不起作用吗?顺便说一句,我刚刚在你的“可填充”中发现了一个拼写错误。实际上,如果它是自动递增的,就不应该有“ID”,但它也有一个尾随昏迷。
protected $primaryKey = 'ID';

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