Die Antwort muss der Inhalt ein string oder Objekt-Implementierung von __toString(), "boolean", der nach verschieben in psql
Sobald ich meine Laravel-App von MySQL, pSQL. Ich habe immer diesen Fehler.
Inhalt der Antwort enthalten sein muss eine Zeichenfolge oder ein Objekt Implementierung von __toString(), "boolean" gegeben.
Habe ich eine API, die annehmen, um die Rücksendung meiner promotion
http://localhost:8888/api/promotion/1
public function id($id){
$promotion = Promotion::find($id);
dd($promotion); //I got something here
return $promotion;
}
Es verwendet, um die Rücksendung meiner promotion, ist es jetzt ein Fehler zurückgegeben.
dd($Aktion);
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
}
Inhalt
__
Irgendwelche Tipps /Anregungen auf dieser eine große Hilfe!
- Meinst du postgresql? Psql ist der name eines client-noh?
- Versuchen Sie einfach, die Codierung Reaktion in einen json-string
return json_encode($promotion);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wieder von Ihrem controller, Laravel wird versuchen, zu konvertieren zu einem string. Wenn Sie ein Objekt zurückgeben, das auf das Objekt
__toString()
magic-Methode wird aufgerufen, um die Konvertierung zu machen.Daher, wenn Sie nur
return $promotion
aus Ihrem controller-Aktion, Laravel ist rufen__toString()
auf es, um es in einen string konvertieren, um anzuzeigen.Auf die
Model
,__toString()
AnrufetoJson()
gibt das Ergebnis derjson_encode
. Daherjson_encode
zurückfalse
, das heißt, es läuft in einen Fehler.Ihre
dd
zeigt, dass Ihrimg
Attribut ist einstream resource
.json_encode
nicht codieren einesresource
, also ist das wohl den Fehler verursacht. Sollten Sie Ihreimg
Attribut der$hidden
- Eigenschaft, um es zu entfernen aus derjson_encode
.Call to undefined method stdClass::toJson()
Ich hoffe, ich bin in der Nähe.img
Spalte von meiner promotion-Tabelle, und es funktioniert wieder. Ich denke, dass psql ist wirklich streng.Ihre Antwort muss wieder eine Art von
Response
Objekt. Sie können nicht nur ein Objekt zurückgeben.So ändern Sie ihn auf etwas wie:
oder mein Favorit mit der helper-Funktion:
Ob die Rückkehr eine Antwort nicht funktioniert, muss es möglicherweise eine Art von encoding-Problem. Finden Sie in diesem Artikel: Die Antwort muss der Inhalt ein string oder Objekt-Implementierung von __toString(), \"boolean\" gegeben."
created_at
undupdated_at
params zu$hidden
array in das Modell? Das war ein weiterer Vorschlag, die für einige gearbeitet. Wenn das funktioniert können wir eingrenzen, von dort aus.Response
Objekt. Zurück können Sie eine beliebige Zeichenfolge oder ein beliebiges Objekt, implementiert das__toString()
- Methode (die Eloquent-Modelle tun).Ich habe dieses Problem, wenn ich einen ajax-Aufruf zum abrufen von Daten aus der Datenbank. Wenn die Steuerung zurückgegeben wird das array es konvertiert es in einen booleschen. Das problem war, dass ich hatte "ungültige Zeichen" wie ú u mit accent).
Es wird darauf hingewiesen, nicht direkt in der Datei, die den Fehler verursacht hat. Aber es ist tatsächlich ausgelöst in einer controller-Datei. Es passiert, wenn man einen Rückgabewert von einer Methode definiert innen in eine controller-Datei, die auf einen booleschen Wert. Es muss nicht festgelegt werden auf einen booleschen Typ, aber auf der anderen Seite muss es gesetzt werden oder den Wert eines string-Typs. Es kann angezeigt werden wie folgt :
wie folgt :