stolentine / macros
此包的最新版本(v1.0.0)没有可用的许可证信息。
v1.0.0
2021-07-07 09:49 UTC
This package is auto-updated.
Last update: 2024-09-07 16:43:56 UTC
README
##宏
迁移
###类型
- 创建类型(Enum)
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; Schema::table('', function (Blueprint $table) { $table->createType('claim_document_types') ->enum(['contract', 'act', 'ttn', 'check']); });
- 删除类型
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; Schema::table('', function (Blueprint $table) { $table->dropType('claim_document_types')->ifExists(); });
###列
- 具有任意类型的列。
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; Schema::create('claim_documents', function (Blueprint $table) { $table->addColumnRaw('claim_document_types', 'type'); });
作为普通列删除。
###自定义唯一索引
- 创建。
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; Schema::create('table', function (Blueprint $table) { $table->customUnique('column'); $table->customUnique('column', 'index_name'); $table->customUnique(['column1', 'column2']); $table->customUnique(['column1', 'column2'], 'index_name'); $table->customUnique('inn') ->where('deleted_at', 'is', null) ->where('create_at', 'is', null, 'or'); $table->customUnique('inn') ->whereIsNull('create_at'); // только для deleted_at $table->customUnique('inn') ->whereDeletedAtIsNull(); });
###如果存在则自定义删除索引
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; Schema::create('table', function (Blueprint $table) { $table->customDropIndex('index_name')->ifExists(); $table->customDropIndex(['column'])->ifExists(); $table->customDropIndex(['column1', 'column2'])->ifExists(); });
约束
- 添加
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Query\Builder; Schema::table('table', function (Blueprint $table) { $table->addConstraint(['amount'])->check('amount >= 0 OR amount IS NULL'); $table->addConstraint('table_not_negative_amount_check')->check('amount >= 0 OR amount IS NULL'); $table->addConstraint(['amount'])->check(fn (Builder $q) => $q ->where(fn (Builder $q) => $q ->where('amount', '>=', 0) ->orWhereNull('amount') ) ); });
- 删除
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; Schema::table('table', function (Blueprint $table) { $table->dropConstraint(['amount']); $table->dropConstraint('table_not_negative_amount_check'); });