2014-01-29 4 views
0

Я пытаюсь создать интерфейс регистрации для нашего приложения. Мне нужно отслеживать, когда изменения происходят в базе данных через приложение. Поэтому, когда кто-то обновляет поле, мне нужно вставить строку в журнал с таблицей, исходное значение столбцов, новое значение столбца, метку времени и пользователь, внесший изменения. Для меня логичным способом сделать это является привязка к классу DB в laravel, поэтому каждый раз, когда он вызывается, и используется метод update/delete, он запускает мой новый метод получения необходимой информации и вставки ее в журнал.Вызов дополнительного метода в DB :: update или DB :: delete (laravel, eloquent)

Мне нужно, чтобы он работал на уровне БД. Я считаю, что это необходимо для обновлений/удалений, вызванных из БД или красноречивого.

Как бы я это сделал?

ответ

0

При поиске и пробной версии и ошибке я выполнил свою задачу следующим образом.

Я создал прослушиватель событий, который я для организационных целей, помещенных в /app/events/database.php

Со следующим

<?php 
Event::listen('illuminate.query', function($query, $bindings, $time, $name) 
{ 
    // Code to log query goes here 
}); 

Я тогда помещен в моем/приложение/старт/глобальным. php следующую строку:

include(app_path().'/events/database.php'); 

В настоящее время он захватывает все запросы для запроса базы данных с использованием либо БД, либо Красноречивого.

1

Eloquent предоставляет вам приятные события, даже в документах! Кто знал, что вы можете так много найти. http://laravel.com/docs/eloquent#model-events

+0

Проблема в том, что были случаи, когда Eloquent не использовался для более сложных запросов, и используя эти события только для захвата, выпущенных красноречивым, а не DB напрямую. – projectxmatt

0

Вместо того, чтобы прикрепить что-то на уровне БД, вы рассматривали использование модельных наблюдателей (http://laravel.com/docs/eloquent#model-observers) смотреть все обновления и удаления событий и поставить свою логику в том, что наблюдатель?

+0

Проблема в том, что были случаи, когда Eloquent не используется для более сложных запросов и использует эти события только для захвата, выпущенных красноречивым, а не DB напрямую. – projectxmatt

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