Let's try create two new table called users and roles, but before we do that, let's configure the database config file in laravel so that laravel can connect to the database, which in this case mysql.
You can find the database configuration file under the app/config folder on your laravel 4.2 project folder, look for file called database.php, look for 'connections' section:
'connections' => array(
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/production.sqlite',
'prefix' => '',
),
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'just_for_testing',
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'pgsql' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'forge',
'username' => 'forge',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
'sqlsrv' => array(
'driver' => 'sqlsrv',
'host' => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'prefix' => '',
),
),
Alright next, let's run the artisan command for creating the migration file, which later will be stored on app/database/migrations/ folder.
php artisan migrate:make create_table_users --create=users
NOTE: if you get error permission denied when running command above, try add sudo like this:
sudo php artisan migrate:make create_table_users --create=users
Now, open the migration file and then add this codes for creating table called 'users' using laravel schema builder.
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTableUsers extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function($table)
{
$table->bigIncrements('user_id');
$table->bigInteger('role_id')->unsigned()->nullable();
$table->string('name', 255)->nullable();
$table->string('password', 255)->nullable();
$table->enum('gender', array('male','female'))->nullable();
$table->string('status', 10)->default('active')->nullable();
$table->timestamps();
$table->index(array('user_id'), 'user_id_idx');
$table->index(array('role_id'), 'role_id_idx');
$table->index(array('name'), 'name_idx');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
At this point, the table is not yet created because the migration file is not run yet, to run the migration use this artisan command:
php artisan migrate
Okay, i think i need to create another table called roles, let's run the artisan command again to create the migration file called create_table_roles.
php artisan migrate:make create_table_roles --create=roles
Enter this code for migration file create_table_roles:
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTableRoles extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('roles', function(Blueprint $table)
{
$table->bigIncrements('role_id');
$table->string('role_name', 50);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('roles');
}
}
Don't forget to run the migration with 'php artisan migrate' or 'sudo php artisan migrate' if you get permission denied error.
Now take a look at your database, you should have two new tables, table users and table roles. Next article i will show you how to create models from the two tables that we just created.
EmoticonEmoticon