Я использую redbeanphp 4.3 и стараюсь понять, почему триггер mysql-db не запускается (или может быть проигнорирован).Does redbean php считают созданные mysql-триггеры?
Когда я работаю непосредственно в базе данных (с phpmyadmin) и вставляю строку в таблицу B, столбец в таблице A обновляется. Когда я правильно работаю с базой данных (через rest-api и, следовательно, с redbean php), строка также вставлена в таблицу B, но столбец в таблице A не обновляется.
Это то же поведение, что и в моем приложении Android с сахаром.
Я тогда рассуждал, что использование ORM игнорирует использование триггеров. Но до сих пор я не утверждал, что какое-либо утверждение поддерживает мою диссертацию, а не на некоторых форумах, документацию по redbean и исходный код rd.php.
Объяснение или любая помощь будет оценена. Спасибо заранее.
Редактировать 1: Сценарий, использующий mysqli и pdo-драйвер, приводит к тому же поведению, что и ручная вставка (колонка обновляется). Поэтому PDO не может быть причиной.
Решение:
В таблице А и В имеют 1: N отношение.
Проблема была неправильным использованием метода R :: store() в redbean. Объект1 таблицы A был загружен, вставлен объект2 таблицы B (по R :: store()), триггер был выполнен, но объект1 таблицы A не распознал его. Конечный объект R :: store() на объекте 1 перезаписал обновления фона в исходное состояние.
Таким образом, решение довольно просто: удаление R :: store() на объектах таблицы B. Когда R :: store() вызывается в объекте 1 таблицы A, он сначала обновляет объект A и вставляет объект B впоследствии , который инициирует обновление объекта1.
Возможно, это может быть проблема с PDO, поскольку это будет механизм, используемый ORM для взаимодействия с базой данных. – vascowhite