无法覆盖 laravel Elequent 输出的 id 字段

can't overwrite laravel elequent output's id field

我无法在以下代码中覆盖 $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 的整数值?

有什么帮助吗?

试试这个:

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

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

laravel 不允许在任何模型上即时更改主键的数据类型,

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

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

推荐吗?我不知道!