Laravelにおけるデータベース内のJSONの取り扱い方法


  1. JSONの格納: Laravelでは、JSONをデータベースのテーブルに格納することができます。JSONカラムを持つテーブルを作成するためにマイグレーションを使用します。例えば、以下のようなマイグレーションファイルを作成します。
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->json('data');
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}
  1. JSONの取得: データベースからJSONを取得するには、Eloquent ORMを使用します。以下のように、モデルクラスでJSONカラムを定義し、取得することができます。
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
    protected $casts = [
        'data' => 'array',
    ];
}

これにより、$post->dataという形式でJSONデータにアクセスすることができます。

  1. JSONの更新: JSONデータを更新するには、Eloquentモデルの属性を直接変更し、保存するだけです。
$post = Post::find(1);
$post->data = ['title' => 'New Title', 'content' => 'New Content'];
$post->save();
  1. JSONのクエリ: JSONデータをクエリする場合、whereメソッドを使用して、JSON内の特定のキーまたは値を検索することができます。以下は例です。
$posts = Post::where('data->title', 'like', '%Laravel%')->get();

上記のクエリは、"data"カラム内の"title"キーが"Laravel"を含む投稿を取得します。

このように、Laravelではデータベース内のJSONをシンプルに扱うことができます。上記のコード例を参考にして、JSONを格納、取得、更新、クエリする方法を実装してみてください。