Database
Migrations
// Good
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});
// Bad
DB::statement('CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(255), email VARCHAR(255) UNIQUE, created_at TIMESTAMP, updated_at TIMESTAMP)');
Seeders
// Good
class UserSeeder extends Seeder
{
public function run()
{
User::factory()->count(50)->create();
}
}
// Bad
DB::table('users')->insert([
'name' => 'John Doe',
'email' => 'john@example.com',
]);
Query Builder vs Eloquent
// Good (Eloquent)
$users = User::where('active', 1)->get();
// Good (Query Builder)
$users = DB::table('users')->where('active', 1)->get();
// Bad
$result = mysqli_query($conn, "SELECT * FROM users WHERE active = 1");
$users = mysqli_fetch_all($result, MYSQLI_ASSOC);