2017-04-19 58 views
0

模糊增强混淆现在让我头痛。我确实设法在getter中使用外墙,但是setter在这种关系中并不是特别有效。我已经检查没有混淆的关系,它的工作原理。我认为二传手只会在表格提交时被应用。这是我的代码。Laravel 5.4 Id模糊增强器中的混淆模型人员

public function merchantCategory(){ 


    return $this->hasMany('App\MerchantCategory', 'maincategory_id', 'id'); 
} 

public function getIdAttribute($value){ 

    return Obfuscate::encode($value); 
} 

public function setIdAttribute($value){ 

    return Obfuscate::decode($value); 
} 

唯一的问题是关系那是因为我用了getIdAttribute和做的关系时,它已不原始值。我怎样才能直接解码它?

回答

2

在您的模型中,您可以设置路由密钥来混淆它,而不必混淆getter和setter。

public function getRouteKey() 
{ 
    return Obfuscate::encode($this->getKey()); 
} 

所以现在使用route()帮手的时候,它是完全一样的,当你不混淆。

route('route.path', $model) 

添加模型在RouteServiceProvider结合完成它:

public function boot() 
{ 
    Router::bind('model', function($value) 
    { 
     return Model::find(Obfuscate::decode($value)); 
    }); 

    parent::boot(); 
} 

这样,你的关系依然使用的是普通的ID,而不是混淆它,你仍然可以获得模型结合你的控制器。

public function show(Model $model) 
{ 
    return view('model.show', compact('model')); 
} 
+0

这一个会工作......我已经搞乱了我的工作......哈哈哈...并创建了一个门面,让这个工作。无论如何,非常感谢你的这一次。我将接受并将其应用到我的下一个项目中。 :) – Rbex

+0

@Rbex我明白这是怎么回事! – Grant