Zac*_*erg 3 php laravel laravel-5
我想seasons使用 Laravel 5.5 中的迁移在现有表上复制一列。
我可以使用 SQL 运行这两个查询来完成此操作:
ALTER TABLE seasons ADD uploader_channel_partner_id BIGINT NULL
Run Code Online (Sandbox Code Playgroud)
然后
UPDATE seasons set seasons.uploader_channel_partner_id = seasons.channel_partner_id
Run Code Online (Sandbox Code Playgroud)
我正在创建一个系统,您可以在其中转移视频的所有权,同时保留原始上传者的存储。
我的迁移的 up 函数目前只包含以下内容:
Schema::create('seasons', function (Blueprint $table) {
$table->unsignedBigInteger('uploader_channel_partner_id');
$table->foreign('uploader_channel_partner_id')->references('id')->on('channel_partners');
});
Run Code Online (Sandbox Code Playgroud)
编辑:
我已经让它工作了,但它又慢又难看,我确信有更好的方法:
public function up()
{
Schema::table('seasons', function (Blueprint $table) {
$table->unsignedBigInteger('uploader_channel_partner_id')->after('channel_partner_id')->nullable();
$table->foreign('uploader_channel_partner_id')->references('id')->on('channel_partners');
});
$seasons = Season::withTrashed()->get();
foreach ($seasons as $key => $season) {
$season->uploader_channel_partner_id = $season->channel_partner_id;
$season->save();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用DB::raw()to 强制Sql使用另一列而不是字符串值。
Season::withTrashed()
->update([
'uploader_channel_partner_id' => DB::raw('`channel_partner_id`'),
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |