在 where 子句 laravel 中使用 Json 属性

Posted

技术标签:

【中文标题】在 where 子句 laravel 中使用 Json 属性【英文标题】:Using Json properties in where clause laravel 【发布时间】:2020-09-18 03:54:24 【问题描述】:

我有这张表discounts,我有一个名为rules 的列,它是一个json,它里面有book 数组,就像这样

餐桌折扣:

Column Rules:

rules:"\"books\":[1,2],others.. 

现在我想通过 Books 表检查该特定书籍是否包含在任何 discounts->rules->books 中!

我试过的是这样的:

$discount = Discount:: whereJsonContains('rules->books',$this->id)->get();

但这给我返回的是空数组。

【问题讨论】:

希望你能在这里找到答案***.com/questions/51545655/… 【参考方案1】:

数据类型必须匹配:

// [1, 2]
Discount::whereJsonContains('rules->books', 1)   // Works.
Discount::whereJsonContains('rules->books', '1') // Doesn't work.

// ["1", "2"]
Discount::whereJsonContains('rules->books', '1') // Works.
Discount::whereJsonContains('rules->books', 1)   // Doesn't work.

【讨论】:

我认为数据类型匹配你能看到我使用的代码 $this->id 我认为这会像 1 而不是 "1" 对吗? 只有一种方法可以检查!与dd(gettype($variable))一起死和转储

以上是关于在 where 子句 laravel 中使用 Json 属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 switch 语句中使用 laravel 模型运行多个 Where 子句

如何在 laravel 雄辩的关系中使用 where 子句

在 where 子句 laravel 中使用 Json 属性

Laravel 4:将 where 子句添加到连接条件

Laravel 在 withCount 方法上使用 where 子句

使用 Eloquent 在 Laravel 中使用 where 子句访问嵌套的相关对象