對 JSON 資料的搜尋

Sinker發表於2019-07-30

對json資料的搜尋

"meta": {
        "wants_newsletter": true,
        "favorite_color": "red"
    }
    資料庫儲存形式   {"wants_newsletter": true, "favorite_color": "red" }

where(‘channel->favorite_color’,’red’) 模型和資料庫查詢都可以

資料庫儲存形式 ["2222","2222"]
whereRaw("JSON_CONTAINS(channel,'[\"$da\"]')")
資料庫儲存形式 [2222,2222]
whereRaw("JSON_CONTAINS(channel,'$da')")
資料庫儲存形式 [222,2222]
whereRaw("JSON_CONTAINS(channel,'[".$da."]')")
資料庫儲存形式[{"wants_newsletter": true, "favorite_color": "red" },{"wants_newsletter": true, "favorite_color": "red" }]
whereRaw("channel-> '$[*].favorite_color' LIKE '%$fiel%'")
w.val -> '$[*].*' LIKE '%峰%'

1.w.val欄位是JSON陣列[無所謂JSONObject還是JSONArray]
[反正如果按照物件查,那陣列是匹配不到的]
[反之,如果按照陣列查,物件也是匹配不到的]


2.'$[*].*' 
代表查詢JSONArray 陣列格式的JSON字串中,
第一個*  代表任意下標
第二個* 代表任意屬性


3.LIKE '%峰%'
匹配條件和正常sql 查詢條件一樣 寫

陣列物件的解釋借鑑

對json資料的儲存

資料庫型別為  json型別
模型檔案設定
protected $casts = [
  'file' => 'json', // 宣告json型別\
  'file' => 'json', // 宣告json型別\
]
postman
raw  application/json
file:["222","222"]
[原生操作地址](https://www.cnblogs.com/ShouWangYiXin/p/10567951.html)
新增陣列查詢
例如欄位channel 欄位值 [{"channels":"3"}]
 JSON_CONTAINS(channel,JSON_OBJECT('channels', "3"))
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章