【问题标题】:Laravel 8: Filter/show data on blade view with array saved on dbLaravel 8:在刀片视图上过滤/显示数据,数组保存在数据库中
【发布时间】: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'));
}

现在我要做的是过滤与“类别”表中指定的类别匹配的产品,并隐藏所有其他不匹配的产品。

请帮助,任何建议将不胜感激。

【问题讨论】:

    标签: php laravel eloquent laravel-8 laravel-blade


    【解决方案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

    假设您正在使用模型和关系。

    【讨论】:

      猜你喜欢
      • 2023-01-08
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 2013-07-09
      • 2016-11-20
      • 1970-01-01
      • 2021-10-17
      • 2020-10-10
      相关资源
      最近更新 更多