无法覆盖 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';
推荐吗?我不知道!
我无法在以下代码中覆盖 $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';
推荐吗?我不知道!