2017-02-22 35 views
0

在Laravel 5.3中,我有一個名爲_days的postgres數據庫中的JSON列。查詢具有雄辯性的JSON數組

我嘗試查詢,如下圖所示:

$day=3 
//_days = '[true,false,false,true,true,false,true]' 
$query->where('_days->'.$day,'true')->first(); 

我所試圖做的是檢查JSON數組的索引3是真實的。 不幸的是它返回null

當越來越雄辯查詢我發現,它會生成以下SQL的SQL:

select * 
from "table" 
where "_days"->>'3' = true 

這當然是因爲它試圖找到問題的關鍵不工作「3」,其中有非。

我想獲得的查詢是:

select * 
from "table" 
where "_days"->>3 = true 

我怎樣才能做到這一點withought重複創建一個原始查詢,並只用雄辯的?

回答

0

我想我會創建一個集合了JSON列的,只是拿到的一天該指數3這樣

collect(json_decode('[true,false,false,true,true,false,true]'))->get($day)