Migration
Laravel Migration
Set the Default Value of a Timestamp Column to the Current Timestamp with Laravel Migrations
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
Create a PostgreSQL GIST index on a Laravel migration
Create table mode
use Illuminate\Support\Facades\Schema;
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->index('column_name', 'index_name', 'gist');
});
}
Alter table mode
use Illuminate\Support\Facades\Schema;
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->addIndex('column_name', 'index_name', 'gist');
});
}
Custom Add Index
use Illuminate\Support\Facades\Schema;
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->string('column_name');
});
DB::statement('CREATE INDEX index_name ON table_name USING gist (column_name)');
// Specify the index algorithm to the inet_ops
DB::statement('CREATE INDEX gn_network ON geoip2_network USING gist (network inet_ops)');
}
Create foreign key on the migration
Schema::create('orders', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('customer_id');
$table->foreign('customer_id')->references('id')->on('customers');
// ...
});
Reference
- Database: Migrations - Laravel - The PHP Framework For Web Artisans
- PostgreSQL: Documentation: 15: 12.9. Preferred Index Types for Text Search
- PostgreSQL: Documentation: 15: 8.9. Network Address Types
- tpetry/laravel-postgresql-enhanced: Support for many missing PostgreSQL specific features
- php - How Can I Set the Default Value of a Timestamp Column to the Current Timestamp with Laravel Migrations? - Stack Overflow