LoginSignup
23
28

More than 5 years have passed since last update.

初めてのLaravel(PHP Framework)

Last updated at Posted at 2014-11-26
自分なりのまとめです。
参考にしていただければ幸いですが、参考にして不具合等が起きた場合、保障はできませんのであしからず。
間違い等あればご教授いただけると助かります。

環境準備

Windows

 元の環境:Windows8.1, xampp1.8.3(PHP 5.5.15)
 Database:postgreSQL 9.3.5

1. composerのインストール

参考サイト様:xampp for windows で composer
 ・ composer install を実行する場所が存在しなかった件。
⇒ xampp/phpMyAdmin に「composer.json」があったので、ここでインストール。
 ・ 『 あれ、phpのパスが通ってない・・・?記述ちゃんと一つだけだし、パスもあってるのに・・・ 』
 ⇒ シェル(ちなみにBash使ってました)が問題でした(;^ω^) cmdかps使えよってことですね(´・ω・`)
   
 殆ど問題なくインストール完了。

2. Laravelのインストール

 1) composer global require "laravel/installer=~1.1"
 2) C:\Users\xxx\AppData\Roaming\Composer\vendor\bin を環境変数に追加
  Laravelのコマンドが使えるようになる(2014/11/25 今のところ必要なシーンが思い浮かばないです)

Ubuntu

元の環境:Ubuntu14.02, PHP 5.5.9, apache 2.4.7
 工事中

プロジェクト作成

※違いはlaravelコマンドの方が少し早いだけだとか...

1. composerコマンド

  composer create-project laravel/laravel hogeproject --prefer-dist
  ※オプションについては こちらのサイト様 でまとめてありました。
  違い①:cohfig/app.php の 'key' が自動生成される。(laravelコマンドでの方法は不明) 
  違い②:App::getBootstrapFile() で返されるパスがローカルのパスになっている
  違い③:ちょっとお待ちを...
 

2. laravelコマンド

  laravel new hogeproject

初期設定

タイムゾーンと言語

config/app.php
   # キー(composerのコマンドで生成した場合は自動生成されているかもですが、32文字の乱数を設定するようにしてください)
   `key`   => 'hogehoge',
      # タイムゾーン
   'timezone' => 'Asia/Tokyo', 
   # 言語 
   'locale' => 'ja', 

動作環境の設定

bootstrap/start.php
$env = $app->detectEnvironment(array(

    'local' => array('hogehoge'), # hostnameコマンドで返ってきた端末名

));

ブラウザから初期画面を確認

  ドキュメントルート:hogehoge/public
  参考サイト様:Laravel4のインストールと初期設定/株式会社Nextat(ネクスタット)
  上記サイト様を参考に、 \xampp\apache\conf\extra\httpd-vhosts.conf に追記
  合わせて C:\Windows\System32\drivers\etc\hostsにバーチャルネームを追記
  http://hoge.localhost/ にアクセスするとLaravelのロゴ画像が表示されるはず。

アクセス先を変えてみる

基本、routes.phpにアクセスパターン(post/get)とその後のアクションを記載していく。

Level1

アクセス先:http://hoge.localhost/users

hoge/app/routes.php(追記)

    Route::get('users', function()
    {
    return "Hello!";
    });


⇒ この場合、画面上に「Hello!」と印字される。

Level2

アクセス先:http://hoge.localhost/Homes

hoge/app/routes.php

    Route::get('Homes', 'HomeController@index');

hoge/app/controllers/HomeController.php

class HomeController extends BaseController {

    public function index()
    {
        return View::make('home/index');
    }

}

hoge/app/views/home/index.php

    <?php echo "TOPページです!" ?>

⇒この場合、『TOPページです!』と印字される。

ここは後々追記していきますー。

DB接続

使用環境:postgreSQL v9.3.5
DB名:laravel_pj

設定

2か所書き換え

app/config/database.php

29|  'default' => 'pgsql',
--|
--|    # ここの記述に関しては app/config/local/database.php にも同じ記載が必要なようです。
--|    # なぜ記載を分けているのかわかってませんが、マイグレーションを使用する際に必要になります。 
66|    'pgsql' => array(
67|       'driver'   => 'pgsql',
68|    'host'     => 'localhost',
69|    'database' => 'laravel_pj', # 書き換え
70|    'username' => 'hoge', # 書き換え
71|    'password' => 'hoge', # 書き換え
72|    'charset'  => 'utf8',
73|    'prefix'   => '',
74|    'schema'   => 'public',
75|    ),

マイグレーション

マイグレーションの作成

作成されたマイグレーションは hoge/app/database/migrations の下に作成されていく。

m_usersというテーブルを作成するマイグレーション

cmd : php artisan migrate:make create_m_users_table --create=m_users

▼ 作成されたファイル

app/database/migrations/2014_11_26_132053_create_m_users_table.php
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateMUsersTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('m_users', function(Blueprint $table)
        {
            $table->increments('id');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('m_users');
    }
}

自動生成される関数について

  • up() … 追加したい指示を記載する。(テーブルを追加する場合はcreate文にあたる記述、フィールドを追加する場合はalter文にあたる記述を)
  • down() … 追加したい指示を取り消せる記載をする。(テーブルを追加する場合はdrop table文にあたる記述、フィールドを追加する場合は元の状態に戻すalter文にあたる記述を)

作成されたマイグレーションの書き換え

ファイルを直接書き換えました。↑で作成したm_userテーブルにフィールドを追加します。
参考サイト様:DB:スキーマビルダー

app/database/migrations/2014_11_26_132053_create_m_users_table.php
        # 今回の場合、up()のみ書き換え。
    public function up()
    {
        Schema::create('m_users', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('user_code');
            $table->string('user_name');
            $table->string('user_pswd');
            $table->string('user_photo');
            $table->boolean('del_flg');
            $table->integer('created_user');
            $table->date('created');
            $table->integer('updated_user');
            $table->date('updated');
            $table->integer('deleted_user');
            $table->date('deleted');
        });
    }

マイグレーションの実行

cmd:php artisan migrate

  • エラー1
  [PDOException]
  could not find driver

php.iniの extension=php_pdo_pgsql.dll がコメントアウトされていないか確認。
(mysqlの場合は extension=php_pdo_mysql.dll )
参考:Laravel4のhomesteadでmigrateしようとしたら「SQLSTATE[HY000] [2002] 対象のコンピュータによって拒否されたため、接続できませんでした。」でハマった件

  • エラー2

postgreSQL↓

[PDOException]
 SQLSTATE[08006] [7] FATAL:  ユーザ"homestead"のパスワード認証に失敗しました

MySQL↓

[PDOException]
  SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

app/config/database.php と app/config/local/database.php の設定をもう一度確認してみる。
ポートを指定してみる。 'host'=>3306 を 'pgsql' の配列の最終行に追加する。 
参考:https://laracasts.com/forum/?p=1804-access-denied-for-user-homestead-localhost/3

ベースはできた?のであとは実践。また別で投稿します~

参考サイト

  1. Larabel v4.2 本家 { 英語 )
  2. Larabel v4.2:クイックスタート { 翻訳版 )
  3. 株式会社Nextat(ネクスタット) { 応用 )
23
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
28