hmm ... orm предположительно принимает поле бит.
Я создал модель из базы данных. Посмотрите мой сценарий миграции и модель, возможно, это может вам помочь.
Модель
class Model_Test extends \Orm\Model
{
protected static $_properties = array(
'id',
'whatever',
);
protected static $_table_name = 'tests';
}
миграция сценарий
построен из существующей таблицы с помощью команды: масло Усовершенственного fromdb: тест Модели
namespace Fuel\Migrations;
class Create_tests
{
public function up()
{
\DBUtil::create_table('tests', array(
'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true, 'unsigned' => true),
'whatever' => array('type' => 'bit'),
), array('id'));
}
public function down()
{
\DBUtil::drop_table('tests');
}
}
В контроллере, вам нужно будет значение как INT
$f = Input::post('whatever_post_field');
$o = Model_Test::forge(array('whatever' => (int)$f));
$o->save();
Вы правы, сценарий миграции был правильно сгенерирован с использованием поля 'бит'. Однако, когда я использую представление (сгенерированное «нефтью») для создания новой записи, и я ввожу «1» или «0» в текстовое поле для поля бит, Fuel сообщает мне, что введенный мной ввод слишком длинный. Я предполагаю, что он пытается вставить его в виде строки? – n0pe
yep, Fuel интерпретирует значение как строку. Вам нужно указать поле, чтобы сохранить его как целое. – Gadonski
В качестве альтернативы, определите правильный тип данных в свойствах моделей и используйте наблюдателя ввода на before_save, чтобы убедиться, что это int перед его сохранением. – WanWizard