2016-05-23 81 views
0

我發現許多問題與我的問題相關,但無法找到答案。這是關於我的刀片中的foreach循環。htmlentities()期望參數1是字符串,給定的數組? Laravel

我想在我的刀片上打印所有產品名稱,但我沒有弄清楚如何做到這一點。

這就是我應得的產品:

---當前代碼:

// controller 

    $id_array = Input::get('id'); 
    $products= Products::whereIn('id', $id_array)->get(); 
    $product_name = []; 
    foreach($products as $arr) 
    { 
     $product_name= $arr->lists('name'); 
    } 

返回$ PRODUCT_NAME給我這個作爲輸出:

["football","cola","idontknow","freshunicorn","dummy-data"] 

在我的刀片只是一個簡單的:

@foreach($products as $product) 
    {{ $product}} 
@endforeach 

Error: htmlentities() expects parameter 1 to be string, array given 

感謝您的幫助和時間。

回答

1

看來你正在一個數組中的數組中獲取對象。

像這樣:

array(
    array(
    object 
) 
) 

這是因爲你使用get()函數來獲取你的模型。 get()函數總是「想要」檢索多個模型。相反,你將不得不使用first()函數。

像這樣:

foreach($id_array as $arr) 
{ 
    $want2editarray[] = Product::where('id', $arr)->first(); 
} 

希望它可以幫助@Wellno評論

這可能是後:)

編輯,因爲產品::這裏( '身份證',$ ARR) - >第一();由於沒有找到任何內容,因此返回null。

我忘了在檢索產品後添加檢查。

這是可以做到這樣的:

foreach($id_array as $arr) 
{ 
    // First try to get model from database 
    $product = Product::where('id', $arr)->first(); 

    // If $product insert into array 
    if ($product) $want2editarray[] = $product; 
} 
+0

控制器的輸出是一樣的,這就是很好的使用$products。如果我想在我的刀片上打印$ product-> name,我正在嘗試獲取非對象的屬性 – WellNo

+0

編輯我的答案以解決您的問題@WellNo –

+0

我已經做了這些:)但這並沒有解決我的問題..我的刀片仍然給我一個:試圖獲得非對象的屬性 - 我將更新我的問題與我目前的代碼:) – WellNo

0

嘗試使用型號/雄辯來獲取數據。 視圖應該只顯示數據,而不是直接從數據庫中取數據或進行繁重的計算。

+0

我的視圖不直接從我的數據庫中獲取任何數據。我在我的控制器中得到我想要的,並將所有數據發送到我的視圖。 – WellNo

1

爲什麼使用循環ID?您可以通過標識找到所有產品:

$products = Product::whereIn('id', $id_array)->get();

然後在刀片模板

@foreach($products as $product) 
    {{ $product->name }} 
@endforeach 
+0

我試着完全像你告訴我的,但這也給我一個錯誤:htmlentities()期望參數1是字符串,給定的數組 – WellNo

+0

我更新了我的問題與當前,更短的代碼 - 但仍然是相同的錯誤 - htmlentities()期望參數1是字符串,數組給出 – WellNo

+0

請顯示'$ product'變量。在'{{$ product-> name}}'write'<?php dd($ product); ?>' –

相關問題