enum is natively supported. In your migration, just add the column thusly:
// ...
// Enum schema format:
// $table->enum($column_name, $allowed_values);
$table->enum('fruit', ['apple', 'banana', 'cantalope']);
// ...
You will probably want to add your own validation to prevent creating records will null values which would happen if you passed a non-allowed value to the enum column, but otherwise it already exists and works.
If you don't write that validation, then you'll end up with something like this, even though the field is set to disallow null values:
>>> App\Foobar::create(['fruit' => 'apple']);
=> App\Foobar {#640
fruit: "apple",
updated_at: "2016-03-11 18:27:12",
created_at: "2016-03-11 18:27:12",
id: 1,
}
>>> App\Foobar::create(['fruit' => 'banana']);
=> App\Foobar {#647
fruit: "banana",
updated_at: "2016-03-11 18:27:15",
created_at: "2016-03-11 18:27:15",
id: 2,
}
>>> App\Foobar::create(['fruit' => 'pear']);
=> App\Foobar {#640
fruit: "pear",
updated_at: "2016-03-11 18:27:21",
created_at: "2016-03-11 18:27:21",
id: 3,
}
>>> App\Foobar::all()
=> Illuminate\Database\Eloquent\Collection {#646
all: [
App\Foobar {#649
id: 1,
created_at: "2016-03-11 18:27:12",
updated_at: "2016-03-11 18:27:12",
fruit: "apple",
},
App\Foobar {#651
id: 2,
created_at: "2016-03-11 18:27:15",
updated_at: "2016-03-11 18:27:15",
fruit: "banana",
},
App\Foobar {#652
id: 3,
created_at: "2016-03-11 18:27:21",
updated_at: "2016-03-11 18:27:21",
fruit: "",
},
],
}
Note the empty fruit value for record 3.
Also note: sqlite does not support enum, so if you're using sqlite, a varchar field will be created.