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

时间:2016-05-23 13:17:48

标签: laravel foreach

我发现很多问题与我的问题相关但尚未找到答案。这是我的刀片中的foreach循环。

我想在我的刀片中打印所有产品名称,但我不知道如何做到这一点。

这就是我如何获得产品:

---当前代码:

// 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 

感谢您的帮助和时间。

3 个答案:

答案 0 :(得分:1)

您似乎在数组中的数组中获取了一个对象。

像这样:

array(
   array(
    object
  )
)

这是因为您使用get()函数来检索模型。 get()函数总是"想要"检索多个模型。相反,你将不得不使用first()函数。

像这样:

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

希望有所帮助:)

@Wellno评论后编辑

那可能是因为Product :: where(' id',$ arr) - > first();返回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;
}

答案 1 :(得分:1)

为什么使用带ID的循环?您可以按ID找到所有产品:

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

然后在刀片模板中使用$products

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

答案 2 :(得分:0)

尝试使用Model / Eloquent来获取数据。 视图应该只显示数据而不是直接从数据库中提取或进行繁重的计算。