我发现很多问题与我的问题相关但尚未找到答案。这是我的刀片中的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
感谢您的帮助和时间。
答案 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来获取数据。 视图应该只显示数据而不是直接从数据库中提取或进行繁重的计算。