не может перезаписать поле идентификатора laravel elequent output

Я не могу перезаписать идентификатор $ user-> в следующем коде:

$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 красноречивое, чтобы предотвратить такие преобразования типов (целое число в строку)?

как я могу заменить целочисленное значение идентификатора его зашифрованной строкой?

любая помощь?

2

Решение

laravel не позволит изменять тип данных PrimaryKey на лету на любых моделях,

откуда я это знаю? проверьте YourProject / vendor / laravel / framework / src / Illuminate / Database / Eloquent / Model.php: 57

введите описание изображения здесь

Теперь, если вы хотите сделать это, вы можете позвонить $user->setKeyType('string') а затем сделай свой $user->id = 'hihello';

это рекомендуется? Я не знаю!

0

Другие решения

Попробуй это:

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

Метод получения и установки Laravel в eloquent не позволяет изменять некоторые свойства объекта. Атрибуты объекта являются оберткой реальных свойств объекта.

0

По вопросам рекламы [email protected]