我正在使用 PhPUnit,FactoryMuffin和 Faker用于在 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 分配给字段之外,还有什么办法可以解决这个问题吗?
最佳答案
从 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;
});
关于php - FactoryMuffin 中的空值定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26925035/