Содержимое ответа должно быть строкой или объектом, реализующим __toString(), "boolean", заданный после перехода на psql
Как только я переведу свое приложение Laravel из MySQL в pSQL. Я продолжал получать эту ошибку.
Содержимое ответа должно быть строкой или объектом, реализующим __toString(), "boolean".
У меня есть API, который предположил бы вернуть мою рекламу
http://localhost:8888/api/promotion/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
}
Содержание
![введите описание изображения здесь]()
__
Любые подсказки/предложения по этому поводу будут огромной помощью!
Ответы
Ответ 1
Что бы вы не вернули из своего контроллера, Laravel попытается преобразовать в строку. Когда вы возвращаете объект, магический метод объекта __toString()
будет вызван для выполнения преобразования.
Поэтому, когда вы просто 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
}
Ответ 2
Ваш ответ должен вернуть какой-то объект Response
. Вы не можете просто вернуть объект.
Так измените его на что-то вроде:
return Response::json($promotion);
или мой любимый, используя вспомогательную функцию:
return response()->json($promotion);
Если возврат ответа не работает, это может быть какая-то проблема с кодировкой. См. Эту статью: Содержимое ответа должно быть строкой или объектом, реализующим __toString(),\ "boolean\" . Дано "
Ответ 3
У меня возникла эта проблема, когда я использовал вызов ajax для извлечения данных из базы данных. Когда контроллер вернул массив, он преобразовал его в логическое. Проблема заключалась в том, что у меня были "недопустимые символы", такие как ú (u с акцентом).
Ответ 4
Это указывается не непосредственно в файле, который вызвал ошибку. Но это на самом деле запускается в файле контроллера. Это происходит, когда возвращаемое значение из метода, определенного внутри в файле контроллера, устанавливается на логическое значение. Он не должен быть установлен для логического типа, но, с другой стороны, он должен быть установлен или иметь значение типа строки. Это можно показать следующим образом:
public function saveFormSummary(Request $request) {
...
$status = true;
return $status;
}
Учитывая возвращаемое значение логического типа выше в методе, чтобы иметь возможность решить проблему для обработки указанной ошибки. Просто измените тип возвращаемого значения на строковый тип
следующее:
public function saveFormSummary(Request $request) {
...
$status = "true";
return $status;
}
Зависит от случая сценария. Вышеуказанное условие выполняется, когда отправка страницы направляется в метод с именем saveFormSummary просто для проверки правильности содержимого, вставленного в форму. Если процесс проверки прошел успешно, он вернет логическое значение обратно в шаблон файла представления блэйда и снова перейдет к другому процессу.