2016-08-04 4 views
8

Как только я переведу свое приложение Laravel из MySQL в pSQL. Я продолжал получать эту ошибку.Содержимое ответа должно быть строкой или объектом, реализующим __toString(), «boolean», указанный после перехода на 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; 
} 

Он используется, чтобы вернуть мое продвижение по службе, теперь он возвращает ошибку.


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 
} 

Содержание

enter image description here

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

+0

Возможно, вы имели в виду postgresql? Psql - это имя клиента noh? – middlestump

ответ

6

Когда вы только 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 
} 
+0

Хм .. хороший звонок на img, хотя, Теперь, я получил это. 'Вызов неопределенного метода stdClass :: toJson()' Надеюсь, что я близок. – ihue

+0

@ihue Я бы предложил создать новый вопрос с обновленным кодом и информацией для этой новой проблемы. – patricus

+0

Я закончил удаление столбца «img» из таблицы продвижения, и он снова работает. Я думаю, что psql действительно строг. – ihue

12

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

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

return Response::json($promotion); 

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

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

Если возврат ответа не работает, может быть какой-то вопрос кодирования. См. Эту статью: The Response content must be a string or object implementing __toString(), \"boolean\" given."

+0

Пожалуйста, проверьте сообщение, на которое я ссылаюсь, чтобы узнать, есть ли у вас какая-то проблема с кодировкой utf8. По-видимому, это довольно часто для некоторых. Это может вызвать проблему с кодировкой данных. Все выглядит нормально с вашей моделью, но может быть основной проблемой с самой таблицей. –

+0

В частности, попробуйте http://stackoverflow.com/a/32803858/1133306 –

+0

Это что-то не так с create_at/updated_at? По некоторым причинам ваши предложения по-прежнему бросают ту же ** ошибку ** – ihue

-1

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

 Смежные вопросы

  • Нет связанных вопросов^_^