php-応答コンテンツは、psqlへの移動後に指定された__toString()、"boolean"を実装する文字列またはオブジェクトである必要があります
LaravelアプリをMySQLからpSQLに移動するとすぐに。このエラーが発生し続けました。
応答コンテンツは、__ toString()を実装する文字列またはオブジェクトである必要があり、「ブール値」が指定されます。
プロモーションを返すことを想定したAPIがあります
http:// localhost:8888 / api / Promotion / 1
public function id($id){ $promotion = Promotion::find($id); dd($promotion); //I got something here return $promotion; }
以前はプロモーションを返していましたが、現在はエラーを返します。
dd($ Promotion);
I got Promotion {#410 ▼ #table: "promotions" #connection: null #primaryKey: "id" #perPage: 15 +incrementing: true +timestamps: true #attributes: array:16 [▼ "id" => 1 "cpe_mac" => "000D6721A5EE" "name" => "qwrqwer" "type" => "img_path" "status" => "Active" "heading_text" => "qwerq" "body_text" => "werqwerqw" "img" => stream resource @244 ▶} "img_path" => "/images/promotion/1/promotion.png" "video_url" => "" "video_path" => "" "account_id" => 1001 "img_url" => "" "footer_text" => "qwerqwerre" "created_at" => "2016-08-04 10:53:57" "updated_at" => "2016-08-04 10:53:59" ] #original: array:16 [▶] #relations: [] #hidden: [] #visible: [] #appends: [] #fillable: [] #guarded: array:1 [▶] #dates: [] #dateFormat: null #casts: [] #touches: [] #observables: [] #with: [] #morphClass: null +exists: true +wasRecentlyCreated: false }
コンテンツ
__ これに関するヒント/提案は大きな助けになります!
答え :
解決策:
応答はある種のResponse
オブジェクトを返す必要があります。オブジェクトを返すだけではいけません。
次のように変更します:
return Response :: json($ Promotion);
またはヘルパー関数を使用した私のお気に入り:
return response()->json($promotion);
応答を返さない場合は、何らかのエンコーディングの問題である可能性があります。次の記事を参照してください: Responseコンテンツは、__ toString()を実装する文字列またはオブジェクトである必要があります。\"boolean\"が指定されています。"
答え :
解決策:
TL; DR
response()->json($promotion)
を返すだけでは、この質問の問題は解決しません。 $promotion
はEloquentオブジェクトであり、Laravelは応答に対して自動的にjson_encodeします。 PHPstream resourceであるimg
プロパティが原因で、jsonエンコードが失敗し、エンコードできません。
詳細
コントローラーから何を返しても、Laravelは文字列への変換を試みます。オブジェクトを返すと、オブジェクトの __toString()
マジックメソッドが呼び出されて変換が行われます。
したがって、コントローラーアクションから return $promotion
を実行すると、Laravelはそれを変換するために __toString()
を呼び出します。表示する文字列に変換します。
Model
で、 __toString()
はtoJson()
を呼び出し、 json_encode
の結果。したがって、 json_encode
はfalse
を返します。これは、エラーが発生していることを意味します。
dd
は、 img
属性がstream resource
であることを示しています。 json_encode
はresource
をエンコードできないため、これが原因である可能性があります。 img
属性を$hi dd en
プロパティにddして、 json_encode
。
class Promotion extends Model
{{
保護された$hidd en = ['img'];
//クラスの残りの部分
}
答え :
解決策:
この問題は、ajax呼び出しを使用してデータベースからデータを取得したときに発生しました。コントローラが配列を返すと、ブール値に変換しました。問題は、ú(アクセント付きのu)のような「無効な文字」があったことでした。
答え :
解決策:
したがって、最初に object
全体を返し、 json_encode
にラップするだけです。そしてそれを返します。これにより、適切で有効なobjectが返されます。
public function id($ id){
$ Promotion = Promotion :: find($ id);
json_encode($ Promotion);を返します。
}
または、DBの場合、これは次のようになります。
public function id($ id){
$ Promotion = DB :: table('promotions')-> first();
json_encode($ Promotion);を返します。
}
他の人の役に立つかもしれないと思います。
答え :
解決策:
エラーの原因は、ファイル内で直接指摘されていません。ただし、実際にはコントローラーファイルでトリガーされます。これは、コントローラーファイル内で定義されたメソッドからの戻り値がブール値に設定されている場合に発生します。ブール型に設定することはできませんが、文字列型の値を設定または指定する必要があります。次のように表示できます:
public function saveFormSummary(Request $request) {
...
$status = true;
return $status;
}
メソッドで上記のブール型の戻り値を指定すると、 指定されたエラーを処理するために問題を解決します。変更するだけです 戻り値のタイプを文字列タイプに変換します
次のとおりです:
public function saveFormSummary(Request $request) { ... $status = "true"; return $status; }
答え :
解決策:
json_decode(Your variable Name)
を使用できます:
json_decode($result)
Modelから値を取得していました。列にはこのような値があります
{"dayList":[
{"day":[1,2,3,4],"time":[{"in_time":"10:00"},{"late_time":"15:00"},{"out_time":"16:15"}]
},
{"day":[5,6,7],"time":[{"in_time":"10:00"},{"late_time":"15:00"},{"out_time":"16:15"}]}
]
}
したがって、この値フォームモデルにアクセスします。このコードを使用する必要があります。
$dayTimeListObject = json_decode($settingAttendance->bio_attendance_day_time,1);
foreach ( $dayTimeListObject['dayList'] as $dayListArr)
{
foreach ( $dayListArr['day'] as $dayIndex)
{
if( $dayIndex == Date('w',strtotime('2020-02-11')))
{
$dayTimeList= $dayListArr['time'];
}
}
}
return $dayTimeList[2]['out_time'] ;
モデルファイルでカーストを定義することもできます。
protected $casts = [
'your-column-name' => 'json'
];
したがって、この後、この行は必要ありません。
$dayTimeListObject = json_decode($settingAttendance->bio_attendance_day_time,1);
このコードに直接アクセスできます。
$settingAttendance->bio_attendance_day_time
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。