【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種の変換方法でほとんどカバー出来るので、覚えていただくことをおすすめします。
ディスカッション
コメント一覧
まだ、コメントがありません