Model view controller Laravel-一个控制器中的多个模型

Model view controller Laravel-一个控制器中的多个模型,model-view-controller,laravel-5,controllers,Model View Controller,Laravel 5,Controllers,我有以下数据库结构: 查询 身份证 小工具总数 总金额 客户识别码 客户 身份证 名字 姓 在创建查询时,您可以使用该表单将客户详细信息输入到该部分,该部分将首先使用或创建进行存储,然后获取id,以便链接到查询到客户 现在的问题是,这一切都是在客户控制器中的存储方法中完成的,如下所示: public function store(Request $request) { $rules = array( "first_name" => "required",

我有以下数据库结构:

查询

身份证

小工具总数

总金额

客户识别码

客户

身份证

名字

在创建查询时,您可以使用该表单将客户详细信息输入到该部分,该部分将首先使用
或创建
进行存储,然后获取
id
,以便链接到
查询
客户

现在的问题是,这一切都是在
客户
控制器中的
存储
方法中完成的,如下所示:

public function store(Request $request)
{
     $rules = array(
         "first_name" => "required", 
         "last_name" => "required", 
         "total_widgets" => "required"
     );

     // Handle validation 

     // Create customer
     $customer = \App\Customers::firstOrCreate(['first_name' => $request-
                 >get('first_name')]); 

     $enquiry = new \App\Enquiries(); 
     $enquiry->customer_id = $customer->id; 
     $enquiry->save(); 

}
这样做的问题是它没有被分离出来,如果创建客户的过程发生了变化,那么我需要多次改变。(每次我有一个需要客户的部门时)


有更好的方法吗?例如,是否应单独创建客户,然后将id传递到
$request

另一种方法是:

1) 在查询表中,添加名为“添加新客户”的按钮

2) 当您单击此按钮时,将显示一个模式,然后单击提交填写详细信息

3) 单击submit,向Customercontroller发出ajax调用并插入数据,然后返回最后插入的id

4) 现在您可以在Inquirey表单的下拉框中看到新用户(将有一些用于选择用户的下拉框),只需选择它,然后按submit

5) 它将传递给Inquirey控制器并存储

希望这对你有帮助