FactoryMuffin中的空值定义

时间:2014-11-14 07:31:22

标签: php postgresql laravel phpunit faker

我正在使用PhPUnit,FactoryMuffinFaker在Laravel中使用PostgreSQL数据库进行测试。在以前版本的FactoryMuffin(Zizaco \ FactoryMuff)中,我可以为静态工厂数组和调用FactoryMuff :: create时的列分配空值。

然而,这不再有效 - 如果我使用以下定义:

FactoryMuffin::define('MyModel', array(
    'name' => 'word',
    'empty' => null,
    'another' => 'word'
));

当我调用FactoryMuffin :: create而不是将NULL传递给SQL INSERT语句时,它将值保留为空,所以我得到:

INSERT INTO my_table ("name", "empty", "another") VALUES ('Ralph', , 'Someone');

哪个PGSQL不允许。使用

也会发生同样的事情
FactoryMuffin::create('MyModel', array('empty' => null));

如何解决这个问题,除了实例化模型然后将null分配给字段?

1 个答案:

答案 0 :(得分:0)

由于FactoryMuffin 2.1(和3. *),您可以利用回调功能,例如:

FactoryMuffin::define('MyModel', array(
  'name' => 'word',
  'empty' => null,
  'another' => 'word'
))->setCallback(function ($object, $saved) {
  $object->empty = null;
});

在FactoryMuffin 2.1中,回调被设置为define的第三个参数:

FactoryMuffin::define('MyModel', array(
  'name' => 'word',
  'empty' => null,
  'another' => 'word'
), function ($object, $saved) {
  $object->empty = null;
});