#laravel #notifications
#laravel #уведомления
Вопрос:
Я перешел по этой ссылке, чтобы создать уведомление базы данных в моем приложении электронной коммерции laravel, когда пользователь-покупатель отправляет вопрос продавцу
мое приложение успешно смогло создать уведомление базы данных следующим образом
таблица: уведомления
id | type | notifiable_id | notifiable_type | data | read_at | created_at | updated_at
id = 0b2a7fdf-eea4-4982-a86d-e874bb4f28ef
type = AppNotificationsBuyerQuestionNotification
notifiable_id= 48
data = {"message":"Someone asked question for Hostelfe","url":"#", "question_id":12024}
read_at = NULL
created_at = 2018-04-07 12:46:42
updated_at = 2018-04-07 12:46:42
теперь я хочу удалить строку уведомления базы данных с помощью data-> question_id
I have tried below query :
DB::table('notifications')
->where('type','AppNotificationsSellerAnswerNotification')
->where('data->question_id',2079107489)
->first();
получена ошибка :
[2019-03-31 13:22:03] локально.ОШИБКА: SQLSTATE[42000]: синтаксическая ошибка или нарушение доступа: 1064 У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с ‘>’$.»question_id»‘ = ?’ в строке 1 (SQL: выберите * из,
notifications
гдеtype
= App Notifications SellerAnswerNotification иdata
->’$.»question_id»‘ = 2079107489)
Я также попробовал следующий запрос:
$result=DB::table('notifications')->whereRaw("JSON_EXTRACT(data, '$.question_id') = ?", [2079107489]);
Но получил аналогичную ошибку
Как исправить запрос, чтобы получить строку и удалить строку с помощью json в таблице уведомлений?
Комментарии:
1. Какое-либо решение вы нашли? @Bishank Badgami
Ответ №1:
Ну вот, я попробовал это, и это сработало:
DB::table('notifications')
->where('type','AppNotificationsBuyerQuestionNotification')
->where('data->question_id',12024)
->first();
ПРИМЕЧАНИЕ: это будет работать только для MySQL 5.7.13 и более поздних версий.
Для дальнейшего чтения:
https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#operator_json-inline-path
https://laravel.com/docs/5.8/queries#json-where-clauses
Ответ №2:
Когда вы выполняете json_decode ($ data), затем попробуйте where($data[‘question_id’])