Привет всем, есть такая проблема с траназакцией и валидацией ошибок на кохане. Имеется несколько таблиц : Код (Text): Table1 id_table1 name text Table2 id_table2 id_table1 text Table3 id_table3 id_table1 text Все имеет связи на уровне mysql. В каждой моделе ORM у Коханы прописаны правила (rule) к таблицам чтобы поля text не было пустым (not_empty). Так вот, как сделать так что если в какой-то таблице попытались добавить пустое значение в столбец text, то происходила транзакция и выдавалась ошибка. Сейчас мой код такой, но при добавлении в первую таблицу, сразу всё проходит и транзакция не отрабатывается. Код (Text): // Начало транзакции $db = Database::instance(); $db->begin(); try { $t1 = ORM::factory('Table1'); $t1->name = 'Имя'; $t1->text = 'какой-то текст для таблицы 1'; try { $t1->save(); } catch(ORM_Validation_Exception $e) { $errors_action[] = $e->errors('Validation'); } $t2 = ORM::factory('Table2'); $t2->id_table1 = $t1->pk(); $t2->text = 'какой-то текст для таблицы 2'; try { $t2->save(); } catch(ORM_Validation_Exception $e) { $errors_action[] = $e->errors('Validation'); } $t3 = ORM::factory('Table3'); $t3->id_table1 = $t1->pk(); $t3->text = 'какой-то текст для таблицы 3'; try { $t3->save(); } catch(ORM_Validation_Exception $e) { $errors_action[] = $e->errors('Validation'); } var_dump($errors_action); $db->commit(); } catch(Database_Exception $e) { echo 'Сработала транзакция'; $e->getMessage(); $db->rollback(); } Проблема решена. Простой проверкой массива $errors_action, если он не пуст то $db->rollback.