2017-05-20 22 views
0

私が持っているでJSONの唯一のサブキーを取得するために2列の "インベントリ" と呼ばれるMySQLのテーブル(5.7.1):Laravelと雄弁:フィルタ応答

  • ID {文字列}
  • インベントリ{JSON}

インベントリ列は、例えば、以下のようにJSONが含ま:

{ 
    id : "212", 
    inventory : { 
     data : { 
      id : "3", 
      demo : true, 
      access : false 
     } 
    } 
} 

Iは、応答Tで取得したいと思い彼は次のようなJSON:瞬間のために

data : { 
    id : "3", 
    demo : true, 
    access : false 
} 

、私は次のメソッドを使用します。

このコードは、ID = 212

を持つテーブル内のエントリの内容全体を取得することができます
$inventory = Inventory::where('id', "212")->first(); 
return response()->json($inventory); 

しかし、データベースへの単一のリクエストを作成するだけで、「インベントリ」列のjsonのサブキーの内容を取得することはできますか?個々のアイテムを取得するための配列としてそれらにアクセスします。

+0

ので、私が提案するものですこの構文を使用すると、 'return response() - > json($ inventory-> inventory-> inventory);'それがうまくいかない場合、 '$ inventory-> inventory' jsonをデコードして、あなたはほしい –

答えて

0

は、その後、あなたのコントローラ

$inventory = Inventory::where('id', "212")->first(); 
return response()->json($inventory->inventory); 

編集でこれを行うにあなたのInventoryモデル

protected $casts = [ 
    'inventory' => 'array' 
]; 

にこれを追加します。私は「あなたは[この](https://laravel.com/docs/5.4/queries#updating-json-columns)構文を使用してJSONの列を更新することができ、ドキュメントを通じて赤いまし

$inventory->inventory['data'] 
$inventory->inventory['data']['demo'] 
+0

ありがとうが、私はどのようにjsonのサブキーだけを取得することができます。たとえば、私のjsonの例のキー 'demo'? – wawanopoulos

+0

@wawanopoulosが私の答えを更新しました。 jsonデータを配列にキャストしているので、配列アイテムとしてアクセスできます。 – Sandeesh

+0

[OK]をクリックし、リクエストで直接フィルタリングすることができるかどうかを知っていますか?( 'id'、 "212") - > ..... – wawanopoulos