Я не могу перезаписать идентификатор $ 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 красноречивое, чтобы предотвратить такие преобразования типов (целое число в строку)?
как я могу заменить целочисленное значение идентификатора его зашифрованной строкой?
любая помощь?
laravel не позволит изменять тип данных PrimaryKey на лету на любых моделях,
откуда я это знаю? проверьте YourProject / vendor / laravel / framework / src / Illuminate / Database / Eloquent / Model.php: 57
Теперь, если вы хотите сделать это, вы можете позвонить $user->setKeyType('string')
а затем сделай свой $user->id = 'hihello';
это рекомендуется? Я не знаю!
Попробуй это:
$user->attributes['id'] = Crypt::encrypt(['id'=> $user->id]);
Метод получения и установки Laravel в eloquent не позволяет изменять некоторые свойства объекта. Атрибуты объекта являются оберткой реальных свойств объекта.