id(); // BIGINT PK $table->string('display_name'); // “Home”, “Reading Terminal Market” $table->text('raw_address')->nullable(); // what the user originally typed $table->string('street')->nullable(); $table->string('city')->nullable(); $table->string('state', 64)->nullable(); $table->string('postal', 32)->nullable(); $table->string('country', 64)->nullable(); $table->decimal('lat', 9, 6)->nullable(); // ±90.000000 $table->decimal('lon', 9, 6)->nullable(); // ±180.000000 $table->string('phone', 32)->nullable(); $table->json('hours_json')->nullable(); // flexible opening-hours blob $table->timestamps(); // optional composite for fast “near me” queries $table->index(['lat', 'lon'], 'idx_locations_lat_lon'); }); } public function down(): void { Schema::dropIfExists('locations'); } };