代码之家  ›  专栏  ›  技术社区  ›  rakete

在何处放置逻辑以显示模型的子项

  •  0
  • rakete  · 技术社区  · 7 年前

    假设我们有以下两个模型: 分类模型 (hasmanny ProductModel)和 .

    /categories 并查看类别列表( CategoryController::index()

    你能把这个逻辑放到CategoryController中吗?在一个叫做details的函数中( CategoryController::details($categoryId) ProductController::index($categoryId) ?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Tohid Dadashnezhad    7 年前

    确实,用户单击了类别,但是您将与ProductModel进行交互,您可能会编写如下代码:

    public function index(){
      $products=ProductModel::query();
      if($categoryId=\request('category_id')){
      $products->where('category_id',$categoryId);
      }
       $data=[
        "products"=>$products->get();
       ];
       return view("products.index",$data);
    }
    

    正如您在上面的代码中看到的,我们的主要模型是ProductModel,我们返回的视图引用products目录。所以你应该把你的代码放到ProductsController中

    顺便说一下,如果您想使您的代码干净,您可以使用laravel模型作用域,并且您的代码将更改为:

    public function index(){
    
     $data=[
      "products"=>ProductModel::filter()->get();
      ];
      return view("products.index",$data);
    }
    

    所有筛选脚本都将位于筛选范围之后

        2
  •  1
  •   dparoli    7 年前

    我想我要 /categories/{category}/products CategoryController::products($categoryId) 功能。

    您还可以在Laravel文档中查看 nested resources .