-1

存储在数据库表字段'contact_info'中的json记录下方,数据类型为文本

{
  "invoice":{
    "number":"gthy",
    "invoiceDate":"2019-12-25 17:20:08",
    "invoiceDueDate":"2020-01-01 17:20:08",
    "paymentTerms":"7"
  },
  "company":{
    "name":"Test ",
    "address":"Test",
    "city":"Test",
    "state":"Test",
    "country":"Test",
    "pincode":"Test",
    "email":"Test@gmail.com",
    "currency_code":"USD"
  },
  "sender":{
    "name":"Test",
    "address":"Test",
    "city":"Test",
    "state":"Test",
    "country":"Test",
    "pincode":"Test",
    "email":"Test"
  }
}

我需要在 Laravel 中使用“invoiceDueDate”这个字段应用 where 条件。那么我该如何为此编写查询呢?请给我建议。

4

1 回答 1

0

可以使用以下查询:

$contacts = Contact::where('contact_info->invoice->invoiceDueDate', '2020-01-01 17:20:08')->get()

要获取invoiceDueDate特定日期之后的所有记录:

$contacts= Contact::where('test->invoice->invoiceDueDate', '>=','2020-01-01')->get()

不需要 JSON 支持的替代方案:

Contact::where('contact_info', 'like','%"invoiceDueDate":"2020-01-01 17:20:08"%')->get()

查看 laravel的 json查询文档

于 2019-12-28T13:44:49.270 回答