1

我正在使用 PhPUnit、FactoryMuffinFakerLaravel 中使用 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 分配给该字段之外,任何想法如何解决这个问题?

4

1 回答 1

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 中,回调被设置为定义的第三个参数:

FactoryMuffin::define('MyModel', array(
  'name' => 'word',
  'empty' => null,
  'another' => 'word'
), function ($object, $saved) {
  $object->empty = null;
});
于 2015-05-24T00:38:56.410 回答