【Laravel】Eloquent、クエリビルダを配列に変換する方法まとめ

こんにちは。今回はEloquentやクエリビルダで取得した値を配列に変換する方法を紹介します。取得する件数や方法によって変換する方法が異なるので、覚えておくと便利です。

クエリビルダ

クエリビルダで取得したデータの場合は、複数件か単一かで変換方法が異なります。

getで取得する場合

getは複数件のデータを取得することを想定しているため、コレクションオブジェクトとしてデータが返されます。この場合はtoArrayメソッドで配列に変換します。

		$user = \DB::table('users')->all();
		$userArray = $user->toArray();

firstで取得する場合

firstは単一のデータを取得するので、stdClassオブジェクトが返されます。stdClassは直接配列に変換することが出来ないので、一度JSONに変換してから配列に変換する手順を踏みます。

		$user = \DB::table('users')->first();
		$userArray = json_decode(json_encode($user),true);

Eloquentの場合

getやallで取得する場合

getやallで取得する場合はクエリビルダ同様、toArrayメソッドで配列に変換できます。

$user = User::all();
$userArray = $user->toArray();

firstやfindで取得する場合

firstやfindで取得する場合は単一のインスタンスが返りますので、getやallとは変換方法が異なります。attributesToArrayメソッドを使用します。

		$user = User::find(1);
		$userArray = $user->attributesToArray();

まとめ

今回はクエリビルダとEloquentを配列に変換する方法を解説しました。微妙にやり方が異なるので地味にハマる人も多いと思います。今回紹介した4種の変換方法でほとんどカバー出来るので、覚えていただくことをおすすめします。

Laravel

Posted by kobainmac