亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 將數據從一個表移動到另一個表并刪除數據來自的列?

Laravel 將數據從一個表移動到另一個表并刪除數據來自的列?

PHP
Qyouu 2021-06-28 17:42:48
我正在嘗試在 Laravel 遷移中執行以下過程:創建一個名為 的新表client_log_partitions。(完畢)$table->create();$table->bigIncrements('id')->unique();$table->bigInteger('client_log_id');$table->mediumText('partition_data');$table->timestamps();我已經有一個表,client_logs其中的數據存儲在bigText()名為log_data.client_logs表中已經存在的每一行都需要每 250 KB(或 250,000 個字符,因為它應該是單字節編碼)進行拆分,然后client_log_partitions作為分區插入到新表中,并引用client_logs它所屬的條目。我知道我可以使用 來實現這一點$table->postExecute(),我只是不知道我可以用什么來做到這一點。將數據移動到新表后,我需要log_data從client_logs.通常,我會使用 PHP 腳本或類似的東西來做到這一點。但不幸的是,我在無法做到的情況下進行操作。我的問題是,使用 Laravel Migrations 是否可行,如果可以,如何實現?
查看完整描述

2 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

將您的新表向上遷移方法更改為:


public function up()

{

    //Create the table

    Schema::create('your_table_name', function (Blueprint $table) {

        $table->bigIncrements('id')->unique();

        $table->bigInteger('client_log_id');

        $table->mediumText('partition_data');


        $table->timestamps();

    });


    //Copy column from last table to new table

    foreach(MyOldModel::all() as $item)

    {

        //now you can save old data into new table old data : $item -> log_data

        //other operation you want

        MyNewModel::create(array('partition_data' => $item -> log_data));//you can save other columns with adding array values

    }


    //Drop old table column

    Schema::table('client_logs', function (Blueprint $table) {

        $table->dropColumn('log_data');

    });

}

我認為以這種方式也migrate:rollback命令應該可以工作(用于撤消您的更改)!


查看完整回答
反對 回復 2021-07-09
  • 2 回答
  • 0 關注
  • 205 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號