お世話になります。
現在スマホアプリのデータベース周りをlaravelを使って開発しています。
その中で現在データベース内の画像データの名前からサーバ内の画像ファイルを特定し、そのファイルをエンコード
してjsonデータとして返すという機能を実装しようとしております。
データベースはuserテーブルのidとprofileテーブルのuser_idが紐づいており
profileテーブルの中のimage_1カラムの中にそれぞれ対応したイメージデータのファイルの名前が入っています。
一つのデータを取り出してエンコードし、jsonデータとして返す機能は、
$image = $user->profile()->value('image_1'); //必要なイメージデータのファイル名を取得 $myfile = asset('storage/images/'.$image); //ファイルを特定 $encoded_image = base64_encode(file_get_contents($myfile)); //特定したファイルをエンコード return response()->json( [ 'id' =>$user->id, 'name' =>$user->name, 'image' =>$image ], 200, [], JSON_UNESCAPED_UNICODE );//jsonデータとして返す。
ということはわかりました。
現在抱えている問題は、すべてのuserのデータ一覧の中にイメージデータをエンコードした状態でjsonデータとして返したいのですが、どうすればいいかわかりません。
詳しく言うと
$userdate= \App\User::leftJoin('profiles', 'users.id', '=', 'profiles.user_id') ->select('id','name','image_1') ->get();
これで出力すると
[{"id":83,"name":"nabeeeeee","image_1":"nodata.png"},{"id":84,"name":"nabeeeeee","image_1":"nodata"},{"id":85,"name":"nabeeeeee","image_1":"nodata"},{"id":86,"name":"nabeeeeee","image_1":"nodata"},{"id":87,"name":"nabeta","image_1":"nodata"},{"id":88,"name":"","image_1":"nodata"},{"id":90,"name":"","image_1":"nodata"},{"id":94,"name":"\u3066st","image_1":"nodata"},{"id":96,"name":"","image_1":"nodata"},{"id":97,"name":"shimizu1","image_1":13_1.png"},{"id":98,"name":"","image_1":"nodata"},{"id":99,"name":"nabeeeeee","image_1":"nodata.png"},{"id":101,"name":"nabeeeeee","image_1":"nodata.png"},{"id":102,"name":"Test","image_1":"nodata.png"}]
このようなデータが返ってきます。
このimage_1それぞれに
$myfile = asset('storage/images/'.$image_1); //ファイルを特定 $encoded_image_1 = base64_encode(file_get_contents($myfile)); //特定したファイルをエンコード
という処理を施すにはどうすればよいでしょうか?
ご教授いただけないでしょうか?
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー