首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >htmlentities()要求参数%1为字符串,是否给出了数组?拉威尔

htmlentities()要求参数%1为字符串,是否给出了数组?拉威尔
EN

Stack Overflow用户
提问于 2016-05-23 21:17:48
回答 3查看 289关注 0票数 0

我已经找到了许多与我的问题相关的问题,但还没有找到答案。这是关于我刀片上的foreach循环。

我想把所有的产品名称打印在我的刀片上,但我想不出该怎么做。

这就是我获得产品的方式:

-当前代码:

代码语言:javascript
运行
复制
// 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会将以下内容作为输出:

代码语言:javascript
运行
复制
["football","cola","idontknow","freshunicorn","dummy-data"]

在我的刀片中只有一个简单的:

代码语言:javascript
运行
复制
@foreach($products as $product)
    {{ $product}}
@endforeach

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

感谢您的帮助和时间。

EN

回答 3

Stack Overflow用户

发布于 2016-05-23 21:27:23

看起来你得到的是一个数组中的对象。

如下所示:

代码语言:javascript
运行
复制
array(
   array(
    object
  )
)

这是因为您使用get()函数来检索您的模型。get()函数总是“想”检索多个模型。相反,您必须使用first()函数。

如下所示:

代码语言:javascript
运行
复制
foreach($id_array as $arr)
{
    $want2editarray[] = Product::where('id', $arr)->first();
}

希望它能有所帮助:)

在@Wellno comment之后编辑

这可能是因为Product::where('id',$arr)->first();返回null,因为它没有找到任何东西。

在取回产品后,我忘了添加检查。

这可以像这样完成:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2016-05-23 22:26:21

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

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

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

代码语言:javascript
运行
复制
@foreach($products as $product)
    {{ $product->name }}
@endforeach
票数 1
EN

Stack Overflow用户

发布于 2016-05-23 22:17:53

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37392094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档