自分なりのまとめです。
参考にしていただければ幸いですが、参考にして不具合等が起きた場合、保障はできませんのであしからず。
間違い等あればご教授いただけると助かります。
環境準備
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
初期設定
タイムゾーンと言語
# キー(composerのコマンドで生成した場合は自動生成されているかもですが、32文字の乱数を設定するようにしてください)
`key` => 'hogehoge',
# タイムゾーン
'timezone' => 'Asia/Tokyo',
# 言語
'locale' => 'ja',
動作環境の設定
$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
Route::get('users', function()
{
return "Hello!";
});
⇒ この場合、画面上に「Hello!」と印字される。
Level2
アクセス先:http://hoge.localhost/Homes
Route::get('Homes', 'HomeController@index');
class HomeController extends BaseController {
public function index()
{
return View::make('home/index');
}
}
<?php echo "TOPページです!" ?>
⇒この場合、『TOPページです!』と印字される。
ここは後々追記していきますー。
DB接続
使用環境:postgreSQL v9.3.5
DB名:laravel_pj
設定
2か所書き換え
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
▼ 作成されたファイル
<?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:スキーマビルダー
# 今回の場合、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
ベースはできた?のであとは実践。また別で投稿します~
参考サイト
- Larabel v4.2 本家 { 英語 )
- Larabel v4.2:クイックスタート { 翻訳版 )
- 株式会社Nextat(ネクスタット) { 応用 )