2015-05-12 3 views
2

Я просто конвертируются все таблицы базы данных MySQL из MyISAM в InnoDB по вопросу следующим образом:Eloquent сохранить() не работает после переключения с MyISAM на InnoDB

ALTER TABLE month_fees ENGINE=InnoDB; 

После код работал отлично до преобразования таблицы двигатель InnoDB :

$m = MonthFee::where('id', Input::get('h_mf_id'))->first(); 
$m->deposit_date = $data['depositDate']; 
$m->deposit_amount += $data['depositAmount']; 
$m->relaxation += $data['relaxation']; 
if($m->save()){ 
    Log::info('saved'.$m->deposit_date.'amount='.$m->deposit_amount); 
} 

Но теперь это не обновление таблицы в базе данных. По-видимому, Eloquent/Laravel не дает никаких ошибок. Как вы можете убедиться в успехе save(), я зарегистрировал некоторые переменные, даже эти значения регистрируются в файле журнала.

Когда я только меняю настольный двигатель на MyISAM, все начинает работать нормально.

Что здесь не так?

+0

Войти запросы, используя http://laravel.com/docs/4.2/database#query-logging и посмотреть если вы можете корректно выполнить запрос 'update' в оболочке mysql или phpMyAdmin. Может быть, проблема не меняется, но что-то другое произошло в то же время :) – vfsoraki

ответ

1

использование находки() метода вместо где() как этого

$m = MonthFee::find(Input::get('h_mf_id')); 
$m->deposit_date = $data['depositDate']; 
$m->deposit_amount += $data['depositAmount']; 
$m->relaxation += $data['relaxation']; 
if($m->save()){ 
    Log::info('saved'.$m->deposit_date.'amount='.$m->deposit_amount); 
} 
+0

Да, я тестировал его с помощью find() тоже, но не повезло –

+0

Правильно ли настроена ваша модель? –

+0

Да, если var_dump ($ m). Я вижу, что он извлекает строки из базы данных. Модель извлекает данные абсолютно нормально, единственная проблема связана с save() –

Смежные вопросы