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

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

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

2 ответа

Решение

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 не позволяет изменять некоторые свойства объекта. Атрибуты объекта являются оберткой реальных свойств объекта.

Другие вопросы по тегам