2016-08-04 42 views
8

將我的Laravel應用程序從MySQL移動到pSQL。我不斷收到這個錯誤。響應內容必須是一個字符串或實現__toString(),「boolean」後移動到psql的對象

響應內容必須是實現__toString(),「boolean」給定的字符串或對象。

我有想回到我的推廣

http://localhost:8888/api/promotion/1

public function id($id){ 
    $promotion = Promotion::find($id); 
    dd($promotion); //I got something here 
    return $promotion; 
} 

它用於返回我的推廣,現在它返回一個錯誤的API。


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 resourcejson_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調用從數據庫檢索數據時遇到此問題。當控制器返回數組時,它將其轉換爲布爾值。問題是我有「無效字符」,比如ú(你帶口音)。

相關問題