Laravel: Как удалить Уведомление базы данных по данным, представленным в массиве уведомлений - PullRequest
2 голосов
/ 31 марта 2019

Я перешел по этой ссылке, чтобы создать уведомление базы данных в моем приложении электронной коммерции laravel, когда пользователь покупателя отправил вопрос продавцу

мое приложение успешно смогло создать уведомление базы данных следующим образом

таблица: уведомления

id | type | notifiable_id | notifiable_type | data | read_at | created_at | updated_at
id = 0b2a7fdf-eea4-4982-a86d-e874bb4f28ef

type = App\Notifications\BuyerQuestionNotification

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

теперь я хочу удалить строку уведомления базы данных по данным-> question_id

I have tried below query :

DB::table('notifications')
    ->where('type','App\Notifications\SellerAnswerNotification')
    ->where('data->question_id',2079107489)
    ->first();

получил ошибку:

[2019-03-31 13:22:03] local.ERROR: 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 Ответ

0 голосов
/ 03 апреля 2019

Когда вы делаете json_decode ($ data), попробуйте где ($ data ['question_id'])

...