繁体   English   中英

Laravel-几个相关的模型保存

[英]Laravel - Several related models saving

Laravel 5.4。*

我具有以下控制器和功能:

AuthorController

class AuthorController extends Controller {
    public function store(StoreAuthor $request) {
        Author::create($request->all());
        return response()->json(["message" => "done"]);
    }
}

BookController的

class BookController extends Controller {
    public function store(StoreBook $request) {
        Book::create($request->all());
        return response()->json(["message" => "done"]);
    }
}

CategoryController

class CategoryController extends Controller {
    public function store(StoreCategory $request) {
        Category::create($request->all());
        return response()->json(["message" => "done"]);
    }
}

以及更多类似的东西。

我通过FormRequest处理验证和安全性,这很简洁。

以前曾问过我要达到的目标,但是我还没有真正找到适合我的解决方案。

我想发送一份表格并保存许多相关的模型。 我想我会发送一个json对象,其中包含所有像这样的模型的数据: {author:author, book:book, category:category, ....}

我应该创建一个处理多种模型逻辑的控制器吗? 如果是这样,如何避免在原始控制器中重复逻辑?

我是否应该为可以保存到其他控制器的每个控制器(即AuthorTrait )创建一个特性? 如果是这样,我如何保持formRequest验证和策略逻辑?

我已经看到laravel方法associateattach ,但是它们似乎仅在记录已经创建时才起作用。

我想到的第一件事是链接不同的控制器方法,但这对我来说似乎很不干净。

谢谢。

在我看来,您想要创建一个处理这些的服务。 我通常会说您的感觉是,链接不同的控制器方法绝对不是解决此问题的方法。 基本上,您需要一种服务来检查请求数据并适当地保存它们。

在您的控制器中:

class AuthorController extends Controller {
    public function store(StoreAuthor $request, CustomService $service) {
        return $service->execute($request);
    }
}

该服务将处理解析和验证数据的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM