当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel中将数据从1个视图插入2个表

史劲
2023-03-14

我正在尝试将数据从签出视图插入到数据库中的两个表中。这是我的签出控制器:

 19 public function index()
 20 {
 21   $websites = Website::all();
 22   return view('checkout')->with([
 23       'websites' => $websites,
 24   ]);
 25 }
 26
 27 /**
 28 * Store a newly created resource in storage.
 29 *
 30 * @param  \Illuminate\Http\Request  $request
 31 * @return \Illuminate\Http\Response
 32 */
 33 public function store(Request $request)
 34 {
 35   // Insert into orders table
 36   $data = Order::create([
 37       'user_id' => $request->user_id,
 38       'date' => $request->date,
 39       'order_number' => $request->order_number,
 40       'payment_method' => $request->payment_method,
 41       'billing_subtotal' => $request->billing_subtotal,
 42       'billing_tax' => $request->billing_tax,
 43       'billing_total' => $request->billing_total,
 44   ]);
 45   $order = DB::table('orders')->insert($data);
 46
 47   //Insert into order_menu table
 48   foreach (Cart::content() as $item) {
 49       $cartitem = OrderMenu::create([
 50           'order_id' => $data->id,
 51           'menu_id' => $item->model->id,
 52           'quantity' => $item->qty,
 53       ]);
 54       $cart = DB::table('order_menu')->insert($cartitem);
 55   }
 56
 57   Cart::instance('default')->destroy();
 58   return redirect('status');
 59 }

还有结帐。刀身php:

 <form action="{{ route('checkout.store') }}" method="POST" enctype="multipart/form-data">
    {{ csrf_field() }}
    <div style="display: grid; grid-template-columns: 1fr 1fr; grid-gap: 100px">
        <div class="details">
            <div class="billing">
                <div class="cart-title"> Detail Pesanan </div>
                <hr>
                <form class="form-inline">
                    <div class="mb-3">
                        <label for="user_id" class="form-label"> Meja </label>
                        <input type="text" value="{{ auth()->user()->name }}" class="form-control" disabled placeholder="{{ auth()->user()->name }}">
                    </div>
                    <div class="mb-3">
                        <label for="payment_method" class="form-label"> Payment </label>
                        <select name="payment_method" id="payment_method" class="form-control" required>
                            <option value="" style="font-size: 15px;"> Choose Payment... </option>
                            <option name="payment_method" value="Pay Now" style="font-size: 15px;"> Pay Now </option>
                            <option name="payment_method" value="Pay Later" style="font-size: 15px;"> Pay Later </option>
                        </select>
                    </div>

                    <input id="user_id" name="user_id" type="hidden" value="{{ Auth::user()->id }}" />
                    <input id="date" name="date" type="hidden" value="{{ date('d M Y', strtotime(today())) }}" />
                    <input id="order_number" name="order_number" type="hidden" value="{{ rand(1000,9999)}}{{ date('Ymd', strtotime(today())) }}" />
                    <input id="billing_subtotal" name="billing_subtotal" type="hidden" value="{{ Cart::subtotal() }}" />
                    <input id="billing_tax" name="billing_tax" type="hidden" value="{{ Cart::tax() }}" />
                    <input id="billing_total" name="billing_total" type="hidden" value="{{ Cart::total() }}" />
            </div>
            <div class="cart-buttons" style="margin-top: 50px;">
                <a href="{{ route('cart.index') }}" class="btn btn-secondary" style="color: white;"> Kembali ke Keranjang </a>
                <button type="submit" class="btn btn-danger" style="color: white; background-color: #BB4430"> Buat Pesanan </button>
            </div>

        </div>

        <div class="cart">
            <div class="cart-title">
                Pesanan Anda
            </div>
            <div class="cart-table">
                <table class="table">
                    <tbody>
                        @foreach (Cart::content() as $menu)
                        <tr>
                            <td>
                                <t style="font-weight: bold;"> {{ $menu->model->name }} </t>
                                <br>
                                <d style="color: #acacac;"> </d>
                            </td>
                            <td>
                                {{ $menu->qty }}
                            </td>
                        </tr>
                        @endforeach
                        <tr>
                            <td style="color: #acacac;"> Subtotal </td>
                            <td style="color: #acacac;"> Rp. {{ Cart::subtotal() }} </td>
                        </tr>
                        <tr>
                            <td style="color: #acacac;"> Pajak </td>
                            <td style="color: #acacac;"> Rp. {{ Cart::tax() }} </td>
                        </tr>
                        <tr>
                            <td> Total </td>
                            <td> Rp. {{ Cart::total() }} </td>
                        </tr>
                    </tbody>
                </table>

            </div>
        </div>
    </div>
</form>

但它只向order表插入数据,并出现以下错误:

"传递给Illumate\Database\Query\Builder的参数1::插入()必须是类型数组,对象给定,在第45行的D:\xampp\htdocs\mieaceh\app\Http\Controller\CheckoutController.php中调用"

对于日期输入,数据也不能插入到数据库表中。

我如何解决这个问题?我是拉威尔的新手

共有1个答案

柴琦
2023-03-14

函数的作用是:在表中创建一个新条目,您无需通过$order=DB::Table('orders')再次插入它-

// Insert into orders table
    $data = Order::create([
        'user_id' => $request->user_id,
        'date' => date('Y-m-d', $request->date), // Edit 
        'order_number' => $request->order_number,
        'payment_method' => $request->payment_method,
        'billing_subtotal' => $request->billing_subtotal,
        'billing_tax' => $request->billing_tax,
        'billing_total' => $request->billing_total,
    ]);
    $order = DB::table('orders')->insert($data); // Remove this line

    //Insert into order_menu table
    foreach (Cart::content() as $item) {
        $cartitem = OrderMenu::create([
            'order_id' => $data->id,
            'menu_id' => $item->model->id,
            'quantity' => $item->qty,
        ]);
        $cart = DB::table('order_menu')->insert($cartitem); // Remove this line
    }

    Cart::instance('default')->destroy();
    return redirect('status');

 类似资料:
  • 我有一个用户表和一个帐户表。 此帐户表定义用户可以拥有的帐户。 例如 账户: 用户: 我现在有另一个表:users\u accounts 我正在为新用户创建一个界面。在这个页面上,我有基本的细节,但也有一个复选框列表(从accounts表创建)。复选框表示用户需要为其设置的帐户。 我要做的是创建帐户时: 我还想将用户ID和他们需要设置的帐户添加到users_accounts表中。单个用户可能需要多

  • 我有两个SQL表 表 1: 列1, 列2, 列3, 列4, 列5, 列6, 列7 表 2: 列1, 列2, 列4, 列5, 列10 (新列) 应该被赋予默认值0 我需要将数据从表1复制到表2

  • 嗨,我是拉威尔的新手,我在将数据插入数据库和抛出错误时遇到了麻烦 msgstr"Countable():参数必须是实现可数的数组或对象" 我想在数据库中添加所有注册员工的出勤信息 控制器 叶片输出: 模型类员工出席扩展模型{// } 模型2 命名空间App; 使用Illumb\Database\Elount\Model; 类employee_data扩展模型{//protected$fillabe

  • 以下是活动2的代码:包helloworld.app; 以下是活动1的xml文件代码: 编辑:以下是来自logcat的错误消息 08-01 07:01:11.673:E/AndroidRuntime(1326):at Android.view.view$1.onclick(View.java:3578) 08-01 07:01:11.673:E/AndroidRuntime(1326):at And

  • 问题内容: 我想从一个表中读取所有数据,然后将一些数据插入到另一个表中。我的查询是 但我有一个错误 请帮我。 问题答案: 您可以使用INSERT … SELECT语法。请注意,您可以在SELECT部分​​中直接引用“ 1”。

  • 我是laravel的新手,我想使用一个表单提交将数据插入两个不同的表中。示例我希望将用户的帐户信息插入“tbl_用户”(例如电子邮件、密码),并将用户信息插入“tbl_客户端”(例如姓名、日期、地址)。顺便说一句,我只是在使用laravel默认的身份验证寄存器(User.php,RegisterController.php)。有没有最安全的方法?。