laravel - 如何检查laravel中是否存在通知
问题描述
我正在使用 laravel 附带的默认通知。我知道检查通知是否被读取的方法,但我不需要。我需要检查之前是否创建了通知。
laravel 中的默认通知表是这样的:
通知迁移
Schema::create('notifications', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('type');
$table->morphs('notifiable');
$table->text('data');
$table->timestamp('read_at')->nullable();
$table->timestamps();
});
我创建的通知返回一个数组,该数组被添加到通知表的数据字段中。
数组是这样插入的:
数据:
{“身份证”:77}
我试图检查关系是否存在,但我无法访问数组值。
我已经尝试了所有这些方法
$destination = User::findOrFail($model->user_id);
$previusNotification = $destination->notifications()->where('data.id', $model->id)->count() > 0;
or
$previusNotification = $destination->notifications()->where('data[id]', $model->id)->count() > 0;
or
$previusNotification = $destination->notifications()->where('data['id]', $model->id)->count() > 0;
但它总是返回:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'data.id'
解决方案
您想检查data
通知表中字段的 JSON 字符串是否具有id
匹配的$model->id
. 您可以使用whereJsonContains()
从 JSON 字符串中提取值。
->whereJsonContains('data->id', $model->id)
推荐阅读
- r - 使用 2 个 SunburstR 图将点击事件添加到闪亮的应用程序
- xcode - xcode 11.4 代码符号在编译时失败了一个非零数字
- python - Django rest-framework [views]:用户只能更新他们创建的模块
- winapi - 如何制作具有自定义宽度和颜色的静态控件?
- sql - 在 SQL Server 查询中使用模式和 patindex 函数时如何忽略特定的字符串值?
- php - Laragon - 我如何在启动时为网站提供服务?
- javascript - 使用 javascript 对 html 进行排序
- excel - 从函数添加控件(不是子!)
- python - 基于特殊模型Django的动态查询集
- python - 如何在python程序中应用递归