2

我无法覆盖以下代码中的 $user->id :

$followers_list = follow::where('followed_id',$userId['userId'])
            ->get();   

        foreach($followers_list as $follower)
        {
           $user = myuser::find($follower->follower_id);
           echo $user->id;//everything is fine
           $user->id = Crypt::encrypt(['id'=> $user->id]);               
           echo $user->id; //it's zero for all users
           array_push($followers,$user);               
        }

防止这种类型转换(整数到字符串)是laravel eloquent中的规则还是某些东西?

如何用加密字符串替换 id 的整数值?

有什么帮助吗?

4

2 回答 2

0

laravel 不允许在任何模型上动态更改 PrimaryKey 的数据类型,

我怎么知道?检查 YourProject/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:57

在此处输入图像描述

现在如果你想这样做,你可以打电话$user->setKeyType('string')然后做你的$user->id = 'hihello';

推荐吗?我不知道!

于 2017-08-05T05:47:07.787 回答
0

尝试这个:

$user->attributes['id'] = Crypt::encrypt(['id'=> $user->id]);

eloquent 中的 Laravel getter 和 settier 不允许更改某些对象属性。属性对象是对象真实属性的包装。

于 2017-08-05T05:26:59.413 回答