在Laravel架构构建器中创建新列,默认情况下使用现有列的值

时间:2016-09-08 12:49:58

标签: php laravel

我正在尝试创建一个表,其中包含“email_address”字段和“激活哈希”字段。 “激活哈希”字段的默认值应为

BMP_SetPaletteColor

是否可以使用laravel迁移进行设置,我该怎么做?

当然,我应该说,我使用postgres作为数据库引擎

2 个答案:

答案 0 :(得分:0)

大多数数据库引擎都限制了可以将哪些值设置为列的默认值。根据您的数据库引擎,您可以通过事件/触发器来执行此操作,但使用Eloquent events在应用程序级别解决此问题更容易,也可以说更好。

答案 1 :(得分:0)

当我需要做这样的事情时,我将代码分成两部分:

  1. 创建列(使用Schema Builder)
  2. 设置值(通过PHP,加载所有模型并在foreach中逐个更新)
  3. 注意: 这两个步骤都可以在迁移文件中完成。

    你不能完全在MySQL(如果你使用MySQL)查询,因为它没有microtime()函数。

    但是我在MySql上发现了microtime()的这个UDF实现:

    https://github.com/JohannesMP/MySQL-udf-microtime

    如果您没有更新庞大的数据集,我会坚持使用第一个解决方案。但是如果你要更新一个庞大的数据集,那么MySQL实现会更快。