首页 > 解决方案 > laravel如何通过多个表单向多个表中插入数据

问题描述

嗨,我是 laravel 的新手,我有 3 个表格,即客户、服务、联系人都有不同的表格,例如客户、服务、联系人,我需要在 laravel 的数据库中插入这些表格。

服务形式:

 <form method="POST" action="{{ route('service.store') }}">
                          @csrf

                           <div class="input-w">
                              <label class="label-style">Service Type:</label>
                              <span><select class="form-control" required >
                                <option type="brillare">Brillare</option>
                                <option type="hair">Hair</option>
                              </select></span>
                          </div>
                          <div class="input-w">
                              <label name="service_name">Service Name:</label>
                              <span><input id="service_name" name="service_name" class="form-control" placeholder="Service Name" required ></span>
                          </div>

                          <div class="input-w">
                              <label name="service_price">Service Price:</label>
                              <span><input type="number" id="service_price" name="service_price" class="form-control" required placeholder="0000.00"></span>
                          </div>                       

                          <div align="center" class="button_style">
                           <p style="margin:15px -40px 20px 182px"><input type="submit" name="submit" id="submit_service" value="Submit" class="btn btn-outline-success"></p>

                          </div> 


                        </form>

移民:

Route::get('/service', function () {
    return view('service');
});




<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class ServiceTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('service', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('servicetype');
            $table->string('servicename');
            $table->string('serviceprice');            
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('service');
    }
}

控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ServiceController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        return view("service");
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request, Service $service)
    {
        //

        $service->servicetype = $request->service_type;
        $service->servicename = $request->service_name;
        $service->serviceprice = $request->service_price;

         $service->create();
        return redirect()->route('service.show');

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

我需要服务表单插入到服务表客户表单插入到客户表联系表插入到 laravel 5.8 中的联系表

标签: phplaravel-5

解决方案


在这种情况下,您有 3 个实体。

  1. 顾客
  2. 服务
  3. 接触

对于所有 3 个实体,您都希望拥有一个模型、一个控制器和一个迁移。如果实体之间存在相互关系,您可以在模型中指定这些关系。查看链接以获取有关 laravel 中关系的更多信息。

https://laravel.com/docs/master/eloquent-relationships

当您在模型中建立关系后,就可以开始迁移到控制器了。

在控制器中,您将拥有以下功能:

public function index(Contact $model)
{
    // return index view
}

public function create()
{
    // return create form view
}

// Option 1
public function store(Request $request, Service $service)
{
    $service->create($request->all);
    return redirect()->route('your.route');
}

// Option 2
public function store(Request $request, Service $service)
{
    $service->servicetype = $request->service_type;
    $service->servicename = $request->service_name;
    $service->serviceprice = $request->service_price;

     $service->create();
    return redirect()->route('your.route');
}


public function edit() 
{
    // return edit view
}

public function update(Request $request,  Service $service)
{
    $service->update($request->all);
    //return view
}

public function destory(Service $service)
{
    $service->delete();
    // return view
}

推荐阅读