68733


**テストテーブル**

[code]

    id cm1 cm2 
    1 a123 b123
    
[/code]

**コード**

[code]

    $test = Test::get();
    $a = $test->pluck('cm1');
    json_encode($a);
    $b = $test->pluck('cm2');
    base64_encode($b);
    return response()->$test->toArray();
    
[/code]

これで変換は完了しましたが、以下のエラーが表示されます。

**エラーメッセージ**

[code]

    未定義のプロパティ：Illuminate \ Routing \ ResponseFactory ::
    
[/code]

cm2のみをbase64に変換したいのですが、どのように書けばよいですか？  
変換を元に戻す方法がわかりません。  
どのように配列に戻しますか？ toarrayではありませんか？ 公式サイトで使い方がわかりませんので、どうすればいいですか？

最終的にはapiとしてページに出力します。


CC BY-SA 4.0
2020-07-19T06:04:25.673
68725
2020-07-19T13:26:57.490
2020-07-19T06:38:50.133
3060
41150
question
php json laravel array base64
一部の列をbase64に変換し、他の列をjson形式に変換します。


こんにちは、はじめまして。

ご質問の内容に不明瞭な点がありますのでこちらで解釈させていただきました。

質問の内容を、データベースから取得した値cm1,cm2があり、cm1は文字列で、cm2をBase64で返したい(バイナリが含まれるため)。また全体の応答はAPIとして利用するため、JSONで戻したい、とした場合のコードは以下のようになります。

テーブルを用意することまではできませんので、配列で代用している点はご理解ください。  
またBase64が利用される理由を明白にするためcm2には制御コードをいれています(ご提示いただいたものはb123ですが...)。

[code]

    $test = ["cm1"=>"a123","cm2"=>Chr(10).Chr(11).Chr(12).Chr(13).Chr(14)];
    $a = $test["cm1"];
    $b = $test["cm2"];
    
    return response()->json([
        'cm1' => $a,
        'cm2' => base64_encode($b)
    ]);
    
[/code]

エラーが出ている理由はresponseオブジェクトのメソッドを正しく呼び出していないためかと思われます。  
このオブジェクトはhttpの応答を返すもので、repsonseにメソッドチェーンで詳細をつなげていくといった形で用います。  
つまり、repsonseオブジェクトに存在するメソッド以外は呼び出すことができません。実装されているメソッドについては公式のドキュメントをご確認ください。上記のようにjsonで応答を返すメソッドも用意されています。

このあたりはだいぶ基礎的な事柄ですので、一旦PHPでのクラスやオブジェクトの扱いなどを学習されることをお勧めします。

<https://laravel.com/api/5.8/Illuminate/Http/Response.html>  
<https://readouble.com/laravel/5.5/ja/responses.html>

質問の内容についてですが、  
この場合、質問のタイトルは「Laravelでデータベースの内容をjson応答形式で返したい」がふさわしいでしょう。  
また質問の内容にはLaravelやPHPのバージョン、可能であればTest::get()の内容、もしくはその説明を含めて記述していただけると、回答していただける方も多くなるかと思います。


CC BY-SA 4.0
2020-07-19T13:17:36.410
68733
2020-07-19T13:26:57.490
2020-07-19T13:26:57.490
37777
37777
68725
answer