@tosha_lol_daaa

Изменение значение в таблице при вносе новой записи?

Пишу диалоги, такая проблемка:
Есть функция скрытия диалога, которая меняет значение в бд у столбца hide на 1(скрытый), и собственно не отображается.
Если юзер(с кем скрыли, а не который скрыл ) напишет тому, кто скрыл - диалог появится.
У меня тут загвостка, у меня есть 2 таблицы:
messages (Тут хранятся все диалоги) и users_in_dialogs (id, user_id, dialog_id и собственно hide)
Я делаю запрос к таблице messages, проверяю айди диалогов(типа "dialog_id =". $dialog_id (у меня немного по другому, чисто суть) и делаю выборку из таблицы readed(0 - не прочитано, 1 - прочитано)
Потом пишу проверку: if ($переменная в которой значение readed хранится == 0) {
тут я вызываю функцию диалогов(чтобы вывелись) и делаю update значения Hide
}
Только ничерта не пашет
Кусочек функции hideDialog, ниже идут маленькие формальности + catch
$data = Input::all();

        //need dialog_id
        try {

            DB::connection()->getPdo()->beginTransaction();

            DB::table('users_in_dialogs')
                ->where('dialog_id', '=', $data['dialog_id'])
                ->where('user_id', '=', $this->user->id)
                ->update([ 'hide' => 1 ]);

А вот кусочек кода функции showDialog()
ниже маленькие формальности
$data = Input::all();
       $dialogreaded = DB::table('messages')
       ->where('dialog_id = '.$data['dialog_id'])
       ->select('readed');

        if ($dialogreaded == 0){
            return getDialogs();  // Функция, которая выводит диалоги на страницу
            DB::table('users_in_dialogs')
            ->update(['hide' => 0]);

P.S: все работает на angulare и все остальное работает офкс, только проблемы с этим(
Функцию скрытия передаю в ангулар конечно, так как по клике скрывается
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
насколько я понял с скрытием диалога проблем у Вас нет, есть проблема с его отображением при публикации сообщений пользователями. В таком случае почему бы это просто не реализовать на триггере при добавлении сообщений? что-то типа:
CREATE TRIGGER `show_dialog` AFTER INSERT ON `messages` FOR EACH ROW BEGIN
UPDATE users_in_dialogs SET hide = 0 WHERE users_in_dialogs.dialog_id = new.gialog_id AND hide = 1;
END;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы