在使用Laravel 4之前将Auth项目转换为数组

时间:2018-04-26 09:01:38

标签: laravel laravel-4

我正在使用Laravel 4中的用户自定义权限,登录权限(json字符串)存储在 Auth::user()->permissions. 中,如下所示:

$permissions =array(101,102);
DB::table('user')->where('id', Auth::user()->id)->update(['permissions' => json_encode($permissions)]);

但是每次我检查权限时都需要将其解码为数组:

if(in_array(1000, json_decode(Auth::user()->permissions)){

}

但是我希望能让它像以下一样工作:

if(in_array(1000, Auth::user()->usr_rights){

} 

2 个答案:

答案 0 :(得分:1)

您可以为模型添加一个Accessor:

public function getPermissionsAttribute($value)
{
    return json_decode($value);
}

你需要做的就是:

if(in_array(1000, Auth::user()->permissions){

}

答案 1 :(得分:0)

您可以使用Implode

这不是最好的方式,但有效。

示例:

$array = array('lastname', 'email', 'phone');

comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

U可以将此字符串保存在用户表的附加行中。

然后使用Explode

将其转换回来

$pizza = "piece1, piece2, piece3, piece4, piece5, piece6";

$pieces = explode(",", $pizza);

echo $pieces[0]; // piece1

echo $pieces[1]; // piece2