SchooでLaravel講座をやっていたので、のぞいて見ました。 下記はメモです。
メモ
- Laravel homestead
- Laravel公式で配布しているサンプルvagrantボックス
- ssh鍵ファイル(id_rsa, id_rasa.pub)がない場合
-
$ ls -la ~/.ssh # で ssh鍵ファイル(id_rsa, id_rasa.pub)の有無を確認 $ ssh-keygen -t rsa # 実行場所はどこでもいい Generating public/private rsa key pair. Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): # 保存ファイル名。デフォルトで問題ないのでエンター Enter passphrase (empty for no passphrase): # パスフレーズの入力 Enter same passphrase again: # パスフレーズの再入力 Your identification has been saved in /Users/hoge/.ssh/id_rsa. Your public key has been saved in /Users/hoge/.ssh/id_rsa.pub.
- $ composer create-project "laravel/laravel=5.1.*" --prefer-dist Laravel
-
まず、composerを使ってプロジェクトを作る。
出力見ていると、Laravelを勝手にインストールしてくれているようでした。Installing laravel/laravel (v5.1.33) - Installing laravel/laravel (v5.1.33) Downloading: 100%
- Composerのミラーサイト
- http://qiita.com/100/items/a1d73544c70fbfa7a643 参考
- リクエストクラス
-
$request-input(フォーム名)
でフォールの値を取得できる。
$request-all()
連想配列でHTTPリクエストに含まれるフォームの値を取得する - Eloquent
-
ORマッパー
クエリを書かなくてもDBにアクセスできる
マップさせているモデルクラスを使い、
$tweet = Tweet::find(id)
でidが一致するレコードを取得する
Tweet{ id: 2, boyd: "hello", created_ad: "2017-01-01 00:00:00" }
- レコードの更新
-
取得したレコードのモデルオブジェクトを更新した後に、
$tweet->save(); - XAMP for linux
-
vagrantのGUEST OS上で、wgetでinstallerの取得
chmod +xで実行権限をつける
sudo installer で実行
sudo /opt/lampp/lampp start でサービスの起動
(httpd, mysql, ftpdの起動) - bladeの分岐構文
-
@if()
@endif - bladeの変数の埋め込み
- {{ $hoge }}
- HTMLのform要素はGET/POST以外のHTTPメソッドをサポートしていない
-
_methodというパラメータを使うことで、独自にHTTPメソッドの解釈を実装する
<input name="_method" type="hidden" value="PUT"> - Route:resource('/tweets','TweetController');
- CRUDのデフォルトのルーティングを定めたルーティング定義
- layout.bladeの差し替え(テンプレートの継承)
-
@section('page-title')
@endsection
layout.blade内のpage-titleセクションを置き換える - Laravel フラッシュデータ
-
1回きりセッション変数を使う場合は、PHPのセッションを使わなくてもいい。
永続化する必要性が「ない」データを扱う。
$request->session()->flash('key', 'value'); - controllerのvalidateメソッド
-
第1引数=リクエスト変数
第2引数=リクエスト変数がもつパラメータをkey、バリデートルール文字列の配列をvalueとした連想配列
バリデーションがNGな場合は、直前のURLにリダイレクトされる - 特別なフラッシュデータ
-
erros=エラーメッセージを格納
_old_input=入力されたパラメータ - 代表的なバリデーションルール
-
required = 必須 string = 文字列 max:n = n文字まで
- エラーメッセージの日本語化
-
HiroKwsさんが作ってくださったパッケージが便利
$ composer require laravel-ja/comja5
resources/langディレクトリに言語設定がある
resources/lang/ja/validation.phpにエラーメッセージ定義がある。
ただattribute変数を、プロジェクトに沿った設定にする。'attributes' => [ 'body' => 'ツイート本文', 'name' => '名前', 'email' => 'メールアドレス', 'password' => 'パスワード', ],
'lacele' => 'ja'にする - 名前付きルートの定義
- {{ route('xxx.index'} }}でaタグのリンクを埋め込む
- bladeの変数埋め込み
- {{ }}HTMLスケープする {!! !!}HTMLスケープしない
- 認証と認可は別
-
認証 = ユーザの特定
認可 = 権限の付与
どっちも必要なケースが多いので、混同されがち - DBマイグレーション
-
DBスキーマの修正を管理する
php artisan make:migration file_name で、マイグレーションの作成
php artisan migrate で、未適用のマイグレーションファイルのみを実行 - Eloquentモデルの名前付のルール
-
モデルクラスの名前の末尾にsをつけたテーブルができる
アッパーキャメルケースのモデルクラス名は、スネークケースでsが末尾に着く。
英語のルールにsをつけてくれる。(fox → foxiesなど) - クエリビルダ
-
メソッドチェーンでクエリを構築する
Model::where('columun_name', 'operand', 'value')
->orderBy('column_name', 'desc')
->get(); # or ->first(); - 1 : nリレーション(has - n)
-
1側: public function n-models(){ # 複数形 return $this->hasMany('n-model_location'); } n側: public function 1-model(){ # 単数系 return $this->belongsTo('1-model_location'); }
- php artisan migrate:reset
- migrationの巻き戻し
- 1 : 1リレーション(has - a)
-
A: public function B-model(){ # 単数形 return $this->hasOne('n-model_location'); } B: public function A-model(){ # 単数系 return $this->belongsTo('1-model_location'); }
- DB設定
-
プロジェクトルートの .envに設定する
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_DATABASE=hoge DB_USERNAME=hoge DB_PASSWORD=hoge
- n : nリレーション(have - n)
-
A: public function A-model(){ # 単数形 return $this->belongsTo('n-model_location'); } B: public function B-model(){ # 単数系 return $this->belongsTo('1-model_location'); }
- attach(id);
- n:nの関係において、相手先テーブルのidにひもづくレコードを中間テーブルに追加する
- detach(id);
- n:nの関係において、相手先テーブルのidにひもづくレコードを中間テーブルに削除
- sync([id_1, id_2,.. id_n]);
-
n:nの関係において、相手先テーブルのidにひもづくレコードのみ残るように更新する。
指定したidに紐づかないレコードは削除する - shift + cmd + o
- PhpStormの「ファイル名を指定して開く」のショートカット
- PHP preg_split関数
- 正規表現で文字列を分割し、配列を返す
- 環境設定
-
.envファイルで設定する
環境に合わせた.envファイル(.env.local, .env.state, .env.productなど)を用意し、
適切なものを.envにリネームする。
env('DB_HOST', 'localhost')のようにDB_HOST変数が設定されていれば、その値、
DB_HOST変数が設定されていなければlocalhostが設定される - LaravelはMVCフレームワークではない
- MVCも実現できるフレームワーク
- Eloquentモデルの置き場所は使い手が責任を持って決める
- Eloquentモデルの置き場所はユーザが自由に選べる。
- migrationメソッド
-
increments(column_name) = 主キーの作成
timestamp() = created_at, updated_at
0 件のコメント:
コメントを投稿