Symfony 3 FOSUSERBUNDLE UPDATE打破了我的应用程序

时间:2016-12-05 18:55:14

标签: php doctrine-orm composer-php symfony fosuserbundle

我正在使用带有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 install修复它。这归结为更新。这就是问题所在。

如果有人知道我如何更新并且仍然有工作申请,我将非常感谢您的意见和反馈。

2 个答案:

答案 0 :(得分:0)

如果您想更新除用户捆绑

之外的所有内容

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

composer update vendor1/package1 vendor2/package2

因此,您可以创建除user-bundle之外的所有包的长字符串。 您可以从

获得所有oudated包的列表
composer show -o --name-only

命令输出。

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

选项--name-only显然只显示没有版本和说明的包名称。

因此,在类似unix的操作系统上,您可以运行类似

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

More about Composer CLI

答案 1 :(得分:0)

1)如果你想在版本2中使用FOSUserBundle,那么没有最终版本/稳定版本 - 所以你总是要在dev / master分支中进行重大更改。

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

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

有关详情,请参阅例如2.0.0 beta的发行说明:

[BC break] User类的salt字段现在可以为空。