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 文件夹中的视图刀片中显示图像

我的视图不包括刀片模板的 CSS - laravel 8

在刀片视图中显示路线的结果(Laravel)

在刀片 laravel 中定义变量

刀片未在视图上显示消息

在 laravel 刀片视图中显示 vue js 模板