php - FactoryMuffin 中的空值定义

标签 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 分配给字段之外,还有什么办法可以解决这个问题吗?

最佳答案

从 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/

相关文章:

php - Ajax 到 php - javascript 事件未触发

sql - 对数组值进行内部联接的结果是多条记录

database - 可同时读写的大表

json - Postgresql 合并具有相同键(hstore 或 json)的行

php - 为什么在我的 html 文件中找不到 svg 代码行

php - 无法看到响应获取请求 laravel phpunit

php - 无法访问 Auth::check 我在 laravel 5.3 中的 View

php - 在函数内部使用 switch,是否应该在 return true 之后使用 break?

php - Zend Framework 3 - 使用 javascript 添加和删除新的输入元素部分

php - 使用 jQuery 将 JSON 发布到 Laravel 4