Я использую PhPUnit, FactoryMuffin а также обманщик для тестирования в Laravel, с базой данных PostgreSQL. В предыдущей версии FactoryMuffin (Zizaco \ FactoryMuff) я мог назначать нулевые значения столбцам как в статическом массиве factory, так и при вызове 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));
Любые идеи, как обойти это, помимо создания экземпляра модели, а затем присвоения нулю для поля?
Начиная с 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;
});
Других решений пока нет …