我已经找到了许多与我的问题相关的问题,但还没有找到答案。这是关于我刀片上的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
感谢您的帮助和时间。
发布于 2016-05-23 21:27:23
看起来你得到的是一个数组中的对象。
如下所示:
array(
array(
object
)
)
这是因为您使用get()函数来检索您的模型。get()函数总是“想”检索多个模型。相反,您必须使用first()函数。
如下所示:
foreach($id_array as $arr)
{
$want2editarray[] = Product::where('id', $arr)->first();
}
希望它能有所帮助:)
在@Wellno comment之后编辑
这可能是因为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;
}
发布于 2016-05-23 22:26:21
为什么要使用带有ID的循环?您可以按ID查找所有产品:
$products = Product::whereIn('id', $id_array)->get();
然后在刀片模板中使用$products
@foreach($products as $product)
{{ $product->name }}
@endforeach
发布于 2016-05-23 22:17:53
尝试使用Model/Eloquent来获取数据。视图应该只显示数据,而不是直接从数据库获取或进行繁重的计算。
https://stackoverflow.com/questions/37392094
复制相似问题