htmlentities()期望参数1是字符串,给定的数组? Laravel

问题描述:

我发现许多问题与我的问题相关,但无法找到答案。这是关于我的刀片中的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 

感谢您的帮助和时间。

看来你正在一个数组中的数组中获取对象。

像这样:

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

我的视图不直接从我的数据库中获取任何数据。我在我的控制器中得到我想要的,并将所有数据发送到我的视图。 – WellNo

为什么使用循环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'' –