首页 > 解决方案 > 如何在 laravel DB 类中使用 create() 方法

问题描述

我想使用以下 SQL 而不是 eloquent 创建一个新行

我正在尝试的代码:

$create_transections = DB::table('package_plan_fees')
        ->create([
            'paid_amount' => $post_data['total_amount'],
            'enroll_able' => $post_data['enrollable'],
            'user_id' => $post_data['user_id'],
            'package_id' => $post_data['package_id'],
            'plan_id' =>  $post_data['plan_id'],
            'status' =>  $post_data['status']
        ]);

标签: phplaravel

解决方案


您需要使用insert而不是create.

您可以从 Laravel 文档中检查插入语句。

您的代码需要是这样的:

$create_transections = DB::table('package_plan_fees')
        ->insert([
            'paid_amount' => $post_data['total_amount'],
            'enroll_able' => $post_data['enrollable'],
            'user_id' => $post_data['user_id'],
            'package_id' => $post_data['package_id'],
            'plan_id' =>  $post_data['plan_id'],
            'status' =>  $post_data['status']
        ]);

但是因为你你想要插入行的 id,你可以使用Laravel 文档的Auto-Incrementing IDs部分中insertGetId描述的方法。

$inserted_rows_id = DB::table('package_plan_fees')
        ->insertGetId([
            'paid_amount' => $post_data['total_amount'],
            'enroll_able' => $post_data['enrollable'],
            'user_id' => $post_data['user_id'],
            'package_id' => $post_data['package_id'],
            'plan_id' =>  $post_data['plan_id'],
            'status' =>  $post_data['status']
        ]);

推荐阅读