Laravel 8:在刀片视图上过滤/显示数据,数组保存在数据库中
Posted
技术标签:
【中文标题】Laravel 8:在刀片视图上过滤/显示数据,数组保存在数据库中【英文标题】:Laravel 8: Filter/show data on blade view with array saved on db 【发布时间】:2022-01-11 05:40:21 【问题描述】:我有一个名为“products”的表,其中包含一些数据和一个名为“category”的列,其中包含随机类别名称。我试图在我的刀片视图上查询它,并且数据显示完美。现在我有另一个名为“类别”的表,其中包含指定类别的数组,例如:[“书”、“衬衫”等]
ProductContoller.php
public function index($subdomain)
//Table which has products data
$products = DB::table('products')->get();
//Table which has array saved data
$categories = DB::table('categories')->get();
return view('products.index', compact('products', 'categories'));
现在我要做的是过滤与“类别”表中指定的类别匹配的产品,并隐藏所有其他不匹配的产品。
请帮助,任何建议将不胜感激。
【问题讨论】:
【参考方案1】:我会选择这样的:
$categories = ['Book', 'Shirt'];
Product::query()->whereHas('category', function (Builder $query) use ($categories): void
$query->whereIn('name', $categories);
)->get();
使用Eloquent's whereHas function
或者:
Product::all()->filter(function (Product $product) use ($categories): bool
return in_array($product->category->name, $categories);
);
使用Collection's filter function
假设您正在使用模型和关系。
【讨论】:
以上是关于Laravel 8:在刀片视图上过滤/显示数据,数组保存在数据库中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 8 中的 storage/app/public/student_img 文件夹中的视图刀片中显示图像