Symfony 3 FOSUSERBUNDLE 更新破坏了我的应用程序

Symfony 3 FOSUSERBUNDLE UPDATE broke my app

我正在使用带有 FosUserBundle 的 Symfony 3.0.9 来构建我的应用程序。我最近做了一个作曲家更新,现在我无法通过 UserManager 或命令行创建用户。错误是 Integrity constraint violation: 1048 Column 'salt' cannot be null。即使我在构造函数方法中显式调用 parent::__construct() 时也会发生此错误,如下所示:

/**
 * constructor.
 */
public function __construct()
{
    parent::__construct();
}

如果我像 $user->setSalt('87234hjjdwshjdsjkds')

这样调用 setSalt 方法也会失败

解决这个问题的所有努力都失败了,所以我开始密切关注我的作曲家更新命令,这是一些输出:

Updating dependencies (including require-dev)

Removing twig/twig (v1.24.1)
Installing twig/twig (v1.28.2)
   Loading from cache

Removing symfony/polyfill-util (v1.2.0)
Installing symfony/polyfill-util (v1.3.0)
   Loading from cache
  
  ...

Removing symfony/polyfill-intl-icu (v1.2.0)
Installing symfony/polyfill-intl-icu (v1.3.0)
   Loading from cache

Removing psr/log (1.0.0)
Installing psr/log (1.0.2)
   Loading from cache

Removing doctrine/cache (v1.6.0)
Installing doctrine/cache (v1.6.1)
   Loading from cache

   ...

Removing doctrine/orm (v2.5.4)
Installing doctrine/orm (v2.5.5)
   Loading from cache


Removing sensiolabs/security-checker (v3.0.2)
Installing sensiolabs/security-checker (v4.0.0)
   Loading from cache

Removing nikic/php-parser (v2.1.0)
Installing nikic/php-parser (v2.1.1)
   Loading from cache

 ...

Removing doctrine/doctrine-migrations-bundle (1.1.1)
Installing doctrine/doctrine-migrations-bundle (v1.2.0)
   Loading from cache
   
   ...
   
Removing phpspec/phpspec (2.5.1)
Installing phpspec/phpspec (2.5.5)
   Loading from cache

Removing doctrine/data-fixtures (v1.2.1)
Installing doctrine/data-fixtures (v1.2.2)
   Loading from cache

Updating friendsofsymfony/user-bundle dev-master (147ca68 => 7261f7a)
   Checking out 7261f7aa143b4bfdb0b7ddc5df208067fa7be698

如您所见,FOSUSERBUNDLE 已更新。

还原作曲家更新,删除我的供应商目录,运行 作曲家安装修复它。这将其归结为更新。这就是问题所在。

如果有人知道我如何更新并且仍然有一个可用的应用程序,我将不胜感激您的意见和反馈。

如果你想更新除用户包之外的所有内容

使用 composer,您可以将包名称作为参数传递给 composer update 命令,如下所示:

composer update vendor1/package1 vendor2/package2

所以你可以创建除用户包之外的所有包的长字符串。 您可以从

获得的所有过时软件包的列表
composer show -o --name-only

命令输出。

此处的选项-o仅适用于可更新的过时软件包。

选项--name-only明显只显示包名,没有版本和描述。

所以,在类 unix 上 OS 你可以 运行 类似

composer show -o --name-only | grep -v 'friendsofsymfony/user-bundle' | xargs composer update

More about Composer CLI

1) 如果您想在版本 2 中使用 FOSUserBundle,则没有 final/stable 版本 - 因此您总是需要期待 dev/master 分支中的重大更改。

2) 几天后至少有一个 2.0.0 Beta 版本,我强烈建议您使用它:Check it here.

3) 用户数据库架构发生了一些变化,例如删除了一些未使用的字段。关于 salt 字段有一个变化 - 所以在你的情况下 - 据我所知,可能缺少的是更新你的数据库 schame(如果你正在使用 Doctrine 调用 bin/console doctrine:schema:update --force)。

有关详细信息,请参阅例如2.0.0 测试版的发行说明:

[BC break] 用户 class 的 salt 字段现在可以为空。