Содержимое ответа должно быть строкой или объектом, реализующим __toString (), «boolean», заданный после перехода на psql

Как только я переведу свое приложение Laravel из MySQL в pSQL. Я продолжал получать эту ошибку.

Содержимое ответа должно быть строкой или объектом, реализующим __toString (), «boolean».

У меня есть API, который предполагает вернуть мою рекламу

HTTP: // локальный: 8888 / API / продвижение / 1

public function id($id){ $promotion = Promotion::find($id); dd($promotion); //I got something here return $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 } 

содержание

введите описание изображения здесь

__ Любые подсказки / предложения по этому поводу будут огромной помощью!

    Когда вы просто return $promotion из своего действия с контроллером, Laravel собирается называть __toString() на нем, чтобы преобразовать его в строку для отображения.

    На Model __toString() вызывает toJson() , которая возвращает результат json_encode . Поэтому json_encode возвращает false , то есть он запускается в ошибку.

    Ваш dd показывает, что ваш атрибут img является stream resource . json_encode не может кодировать resource , поэтому это, вероятно, вызывает сбой. Вы должны добавить свой атрибут img в свойство $hidden чтобы удалить его из json_encode .

     class Promotion extends Model { protected $hidden = ['img']; // rest of class } 

    Ваш ответ должен вернуть какой-то объект Response . Вы не можете просто вернуть объект.

    Поэтому измените его на что-то вроде:

     return Response::json($promotion); 

    или мой любимый, используя вспомогательную функцию:

     return response()->json($promotion); 

    Если возврат ответа не работает, это может быть какая-то проблема с кодировкой. См. Эту статью: Содержимое ответа должно быть строкой или объектом, реализующим заданные __toString (), \ "boolean \". "

    Я получил эту проблему, когда я использовал вызов ajax для извлечения данных из базы данных. Когда контроллер вернул массив, он преобразовал его в логическое. Проблема заключалась в том, что у меня были «недопустимые символы», такие как ú (u с акцентом).