私のデータベースの表の列は、json
タイプとして保存されます。保存したjsonオブジェクトにキーテンプレートのキー値を表示したいのですが、わかりません。Eloquentコレクションのjson type列のアクセスキー?
Newsletter
モデルのテーブルスキーマには$table->json('meta')
があります。meta
カラムは、値として{"foo": "bar"}
。
$newsletter->meta->foo
のようなものを取得するにはどうすればよいですか? $newsletter->meta
は、Laravel 5.5ではデフォルトでjsonオブジェクトの代わりにstringを返しますので、それを変換するには簡単なjson_decode
が必要です。
すべての呼び出しでjson_decode
以外のクリーナーソリューションは、その列のアクセサを使用することです。 getMetaAttribute
しかし、それはまだ乱雑です。私は自動的にjson
PHPオブジェクトの検出に列をしたい、どうすればこれを行うことができますか?
ありがとう、なぜフレームワークがデフォルトでオブジェクトではなく文字列に 'json'カラムをキャストするのが好きですか?これを無効にする方法はありますか?私は数十のモデルとさまざまなコラムで作業していますので、個々にキャストするのではなく、これをグローバルに有効にしたいと考えています。 –
Eloquentは、あなたの属性の値を自動的には分析しません。それは、あなたがそれについて考えれば、奇妙な(そして非常に非効率的な)ものになります。 JSONデータ自体は本質的に単なるphpの文字列です。 –