如何在Laravel中复制现有表?

i5desfxk  于 2022-12-14  发布在  其他
关注(0)|答案(4)|浏览(114)

我想知道如何在Laravel中复制现有的表?我是Laravel的新手。我正在尝试制作一个在线考试应用程序。我想为每个用户创建一个表,并将考试表的所有内容复制到这个新创建的表中。
这是我想做的脚本。它在不是laravel的时候工作得很好。laravel做这件事的方式是什么?

$check = mysql_query("CREATE TABLE IF NOT EXISTS ".$testname." ( id INT, user VARCHAR(30), questn VARCHAR(30), ans VARCHAR(30))");

mysql_query ("INSERT IGNORE INTO ".$testname." SELECT * FROM test");
sz81bmfz

sz81bmfz1#

您可以使用DB::statement方法在Laravel中复制DB表,如下所示:

\DB::statement('CREATE TABLE new_table LIKE old_table');
\DB::statement('INSERT new_table SELECT * FROM old_table');

这会将old_table的结构、索引和数据复制到new_table

js5cn81o

js5cn81o2#

下面是解决方案(有人帮我解决了这个问题):

$db = DB::connection(); 

$sql = "CREATE TABLE IF NOT EXISTS ".$testname." ( id INT, user VARCHAR(30), questn VARCHAR(30), ans VARCHAR(30))"; 
$db->statement($sql); 

$sql = "INSERT IGNORE INTO ".$testname." SELECT * FROM test"; 
$db->statement($sql);
xwmevbvl

xwmevbvl3#

$user = DB::connection('mysql')->select('select * from usersdata');

foreach ($user as $record) {
    $user = DB::connection('mysql1')->table("tablename")->insert(get_object_vars($record));
vhmi4jdf

vhmi4jdf4#

可以通过以下方式复制表结构和数据

use Illuminate\Support\Facades\DB;

if (!Schema::hasTable('new_table_name')) { // make sure table does not exists already
    // creates table structure
    DB::statement('CREATE TABLE new_table_name LIKE old_table_name');
    //inserts table data
    DB::statement('INSERT new_table_name SELECT * FROM old_table_name');
    // Add addtional column if you watch
    if (!Schema::hasColumn('old_table_name', 'deleted_at')) {
        Schema::table('new_table_name ', function (Blueprint $table) {
            $table->softDeletes();
        });
    }
}

相关问题