Содержимое Ответа должно быть строкой или объектом, реализующим __toString (), & quot; логическое значение & quot; дано после переезда в psql

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

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

У меня есть 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
}

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

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

14

Решение

Когда ты просто 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
}
12

Другие решения

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

Так что измените его на что-то вроде:

return Response::json($promotion);

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

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

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

18

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

3
По вопросам рекламы [email protected]