FOSUserBundle could not convert database value to doctrine type array

Si lorsque vous tentez de faire un ajout ou suppression de role en ligne de commande pour FOSUserBundle (FOSUB) vous obtenez un message d’erreur de conversion de Doctrine, 

could not convert database value to doctrine type array

c’est parce que dans votre base de données, dans la colonne « role » de vos utilisateurs, vous avez des valeurs vides, au lieu d’avoir des sérialisations de tableaux vides.

Pour remédier à cela vous pouvez définir par défaut la chaine correspondant à un Array vide, et remplir les vides a coup de commande SQL.

UPDATE table SET column="a:0:{}" WHERE column = ""; 

(en remplaçant les noms de table (ma_table_des_utilisateurs) et de column (role)
Vos commande de promotion de rôles fonctionneront alors comme par magie!

php app/console fos:user:promote jojo ROLE_ADMIN 
Role "ROLE_ADMIN" has been added to user "jojo".

sources: Trouvé et traduit depuis stackoverflow , image

Si vous aimez ce que nous faisons à Cipher Bliss, vous pouvez nous soutenir de plusieurs façons: en faisant un micro don sur liberapay , ou en cryptomonnaies. Le plus simple nous pour nous faire connaître étant de partager cet article.
Suivez moi sur Mastodon @tykayn@mastodon.cipherbliss.com.
Ce site restera libre comme un gnou dans la nature et sans pubs, parce qu'on vous aime. Que la source soit avec vous!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.