讨论数量:
方案如下(伪代码理解即可):
$appends = ['user_id_hash','order_id_hash'];
$hidden=['user_id','order_id'];
public function getUserIdHashAttribute()
{
return openssl_encrypt($this->user_id);
}
public function getOrderIdHashAttribute()
{
return openssl_encrypt($this->order_id);
}
这样既能保证该机密的加密,需要查询的照样查询,互不影响
在我看来评论中已经有答案了,但是你并没有理解我直接给你写伪代码:
用户模型User
:
class User {
/**
* 这里表示有哪些属性(或者表里有哪些字段)
*/
attribute id
attribute name
attribute mobile
/**
* 这个会在模型中增加一个 hash_id 的属性,用来代替加密后的用户编号
*/
public function getHashIdAttribute(){
return Hashids::encode($this->id);
}
}
订单模型Order
:
class Order {
attribute id
attribute order_sn
attribute user_id
public function user(){
return $this->belongsTo(User::class);
}
}
API Controller :
public function show(){
$user = User::find(1);
return [
'id'=>$user->hash_id,
'name'=>$user->name,
];
}
这样你返回的数据中 id 就是加密过的,但是这个和你关联模型没有任何关系,laravel-admin 中根本就不会用到 hash_id
这个属性,为啥会报错呢?
推荐文章: