狠狠撸

狠狠撸Share a Scribd company logo
2014/04/04?shin1x1
Fukuoka.php
わかってるフレームワーク
Laravel
(c) 2014 Masashi Shinbara @shin1x1
開発している構成
(c) 2014 Masashi Shinbara @shin1x1
開発している構成
(c) 2014 Masashi Shinbara @shin1x1
開発している構成
(c) 2014 Masashi Shinbara @shin1x1
マイグレーション
わかってるなぁ
マイグレーション
(c) 2014 Masashi Shinbara @shin1x1
? PHPコードで定義
? ロールバックも可能
? PostgreSQLで使える!
? ちゃんと実用できる
マイグレーションファイル
(c) 2014 Masashi Shinbara @shin1x1
public function up()
{
Schema::create('roles', function(Blueprint $table) {
$table->increments('id');
$table->string('name');
});
}
? メソッド名が列の型
? 引数が列名
マイグレーションファイル
(c) 2014 Masashi Shinbara @shin1x1
public function up()
{
Schema::create('users', function(Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->string('email')->unique();
$table->string('password');
$table->integer('role_id')->index();
$table->foreign(‘role_id')
->references(‘id')->on('roles')
->onUpdate('cascade');
$table->timestamps();
});
}
? インデックス、ユニーク制約、外部キー も設定可能
マイグレーション実行
(c) 2014 Masashi Shinbara @shin1x1
? マイグレーション実行 [up()]
(過去に適用したファイルは適用されない)
$ php artisan migrate
? マイグレーションロールバック [down()]?
(直前に実施したマイグレーションのdown()を実行)
$ php artisan migrate:rollback
(c) 2014 Masashi Shinbara @shin1x1
データベースクエリ
わかってるなぁ
データベースクエリ
(c) 2014 Masashi Shinbara @shin1x1
マニュアルのサンプルが、いきなり生SQL
データベースクエリ
(c) 2014 Masashi Shinbara @shin1x1
マニュアルのサンプルが、いきなり生SQL
どんなSQLでも書ける安心感!
データベースクエリ
(c) 2014 Masashi Shinbara @shin1x1
? クエリビルダ
DB::table('roles')->where('name', '=', ‘Mike')->get();
? Eloquent(ORM)
Role::whereName('Mike')->first();
データベースクエリ
(c) 2014 Masashi Shinbara @shin1x1
? WHERE
? IN
? AND / OR
? BETWEEN
? IS NULL
? OFFSET / LIMIT
? GROUP BY / HAVING
? JOIN / LEFT JOIN
? EXISTS
? COUNT()
? SUM()
? MAX() / MIN() / AVG()
?
?
豊富な表現力
クエリビルダとEloquent
(c) 2014 Masashi Shinbara @shin1x1
記法 レコード 複数レコード
クエリビルダ SQLライク stdclass array()
Eloquent ORM
自分自身
(ex. User クラス)
Illuminate
Database
Eloquent
Collection
実行できるクエリは、ほぼ同じ
データベースコレクション
(c) 2014 Masashi Shinbara @shin1x1
? 取得した値をカンマで連結
Role::all()->implode('name', ‘,');
// role1,role2,role3
? contains()
? each()
? ?lter()
? sortBy()
? map()
? sum()
? toArray() / toJson()
? and more…
(c) 2014 Masashi Shinbara @shin1x1
バリデーション
わかってるなぁ
バリデーション
(c) 2014 Masashi Shinbara @shin1x1
バリデーションルールの拡張が簡単
Validator::extend('fukuoka', function($attribute, $value, $parameters) {
return $value === 'Fukuoka';
});
$rules = [
'area' => 'fukuoka',
];
バリデーション
(c) 2014 Masashi Shinbara @shin1x1
条件が合致した時だけバリデートする
$validator = Validator::make(Input::all(), $rules);
$validator->sometimes('email_and_pass_unique', 'validate_rule', function($input) {
if ($input->has('email') || $input->has('pass')) {
return true;
}
return false;
});
(c) 2014 Masashi Shinbara @shin1x1
俺の好み
わかってるなぁ
Route::group
(c) 2014 Masashi Shinbara @shin1x1
クロージャの意図を入れ子で表現
=> 全てのルートで auth フィルタが有効
Route::group(['before' => 'auth'], function() {
Route::get('/home', function() {
// something
});
Route::get('/', function() {
// something
});
});
DB::transaction
(c) 2014 Masashi Shinbara @shin1x1
クロージャ内に正常処理
=> 自動で BEGIN
=> 例外が飛べば ROLLBACK?
=> 正常終了なら COMMIT
DB::transaction(function() {
DB::table('users')->insert(['name' => 'user-name']);
DB::table('roles')->insert(['name' => 'role-name']);
});
(c) 2014 Masashi Shinbara @shin1x1
自由
わかってるなぁ
クラスファイルの置き場
(c) 2014 Masashi Shinbara @shin1x1
? オートローダーで読めればOK
? 名前空間を設定してもOK
? app/ 以下でなくてもOK
フレームワーク拡張
(c) 2014 Masashi Shinbara @shin1x1
? IoC コンテナでクラスを差し替える
? 気になるところはどんどん変更可
? フィルタ、イベントハンドラ、 ?
extend メソッドで拡張
Laravel
(c) 2014 Masashi Shinbara @shin1x1
こんなふうに考えてください。
アプリケーションは Laravel フレーム
ワークの実装ではありませ ん。
逆に、Laravel が私達のアプリケーショ
ンの実装なのです。
Implementing Laravel 日本語版
(c) 2014 Masashi Shinbara @shin1x1
まとめ
Laravel
わかってるなぁ
@shin1x1
(c) 2014 Masashi Shinbara @shin1x1

More Related Content

What's hot (20)

PDF
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
?
PDF
Twilio API を PHP で触ってみよう
Masashi Shinbara
?
PDF
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Masashi Shinbara
?
PDF
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
?
PDF
レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑
Masashi Shinbara
?
PDF
础奥厂をコート?て?定义する
Sugawara Genki
?
PDF
尝补尘产诲补によるクラウド型言语の実装
Sugawara Genki
?
PDF
20140930 anything as_code
Sugawara Genki
?
PDF
贵濒耻别苍迟诲と搁别诲蝉丑颈蹿迟の素敌な関係
moai kids
?
PDF
Elixir Meetup #1 Loggerの構造と拡張
Sugawara Genki
?
PDF
Terraforming
Tomoaki Yahagi
?
PDF
Spring Framework / Boot / Data 徹底活用 ?Spring Data Redis 編?
Naohiro Yoshida
?
PDF
serverless framework + AWS Lambda with Python
masahitojp
?
PDF
130207 kyotorb
Yuki Shibazaki
?
PDF
CFの便利機能を他の環境でも。Open Service Broker
Kazuto Kusama
?
PDF
20131208 agile samuraibasecamp
Hiroshi SHIBATA
?
PDF
厂产迟のマルチフ?ロシ?ェクトはいいそ?
Yoshitaka Fujii
?
PDF
Machine learning CI/CD with OSS
yusuke shibui
?
PDF
Rails解説セミナー: Railsのアッフ?ク?レート?編
Yohei Yasukawa
?
PDF
补蝉尘.箩蝉と奥别产础蝉蝉别尘产濒测って実际なんなの?
Yosuke Onoue
?
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
?
Twilio API を PHP で触ってみよう
Masashi Shinbara
?
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Masashi Shinbara
?
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
?
レイヤードアーキテクチャを意识した笔贬笔アプリケーションの构筑
Masashi Shinbara
?
础奥厂をコート?て?定义する
Sugawara Genki
?
尝补尘产诲补によるクラウド型言语の実装
Sugawara Genki
?
20140930 anything as_code
Sugawara Genki
?
贵濒耻别苍迟诲と搁别诲蝉丑颈蹿迟の素敌な関係
moai kids
?
Elixir Meetup #1 Loggerの構造と拡張
Sugawara Genki
?
Terraforming
Tomoaki Yahagi
?
Spring Framework / Boot / Data 徹底活用 ?Spring Data Redis 編?
Naohiro Yoshida
?
serverless framework + AWS Lambda with Python
masahitojp
?
130207 kyotorb
Yuki Shibazaki
?
CFの便利機能を他の環境でも。Open Service Broker
Kazuto Kusama
?
20131208 agile samuraibasecamp
Hiroshi SHIBATA
?
厂产迟のマルチフ?ロシ?ェクトはいいそ?
Yoshitaka Fujii
?
Machine learning CI/CD with OSS
yusuke shibui
?
Rails解説セミナー: Railsのアッフ?ク?レート?編
Yohei Yasukawa
?
补蝉尘.箩蝉と奥别产础蝉蝉别尘产濒测って実际なんなの?
Yosuke Onoue
?

Viewers also liked (20)

PDF
テ?サ?インにもこた?わった鲍颈の事始め3
Fumiya Sakai
?
PPTX
アプリチームを支えるSlack bot
Kazuaki KURIU
?
PDF
ビルドサーバで使う顿辞肠办别谤
Masashi Shinbara
?
PPTX
尝补谤补惫别濒チュートリアルを作ってみた。
Futoshi Endo
?
PDF
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム
Kouhei Sutou
?
PPTX
闯补惫补厂肠谤颈辫迟から利用する贵颈谤别产补蝉别
Takuji Shimokawa
?
PPTX
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
Kazuaki KURIU
?
PDF
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
Mayumi Narisawa
?
PPTX
20151205フルスクラッチcms作成のノウハウ With Laravel
Takumi Yoshida
?
PPTX
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Syouta Tada
?
PPTX
Laravel LT
Iwama Ryo
?
PDF
3 tips of Laravel
Kazuaki KURIU
?
PDF
笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索!
Kouhei Sutou
?
PDF
Laravel / Lumen 次の一歩
Yuuki Takezawa
?
PDF
カスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イント
Fumiya Sakai
?
PDF
贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ
Fumihiko Shiroyama
?
PDF
Laravel の学び方と得られる学び
Masaru Matsuo
?
PPTX
尝补谤补惫别濒を使ってみた
Jaeseop Jeong
?
PDF
贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介
Fumiya Sakai
?
PDF
指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説
Fumiya Sakai
?
テ?サ?インにもこた?わった鲍颈の事始め3
Fumiya Sakai
?
アプリチームを支えるSlack bot
Kazuaki KURIU
?
ビルドサーバで使う顿辞肠办别谤
Masashi Shinbara
?
尝补谤补惫别濒チュートリアルを作ってみた。
Futoshi Endo
?
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速でリッチな全文検索システム
Kouhei Sutou
?
闯补惫补厂肠谤颈辫迟から利用する贵颈谤别产补蝉别
Takuji Shimokawa
?
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
Kazuaki KURIU
?
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
Mayumi Narisawa
?
20151205フルスクラッチcms作成のノウハウ With Laravel
Takumi Yoshida
?
Phpフレームワーク 「laravel」て?フ?ロク?を作ろう
Syouta Tada
?
Laravel LT
Iwama Ryo
?
3 tips of Laravel
Kazuaki KURIU
?
笔贬笔で笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补を使って高速日本语全文検索!
Kouhei Sutou
?
Laravel / Lumen 次の一歩
Yuuki Takezawa
?
カスタムトランシ?ションやシ?ェスチャーを生かした鲍滨の実装ホ?イント
Fumiya Sakai
?
贵颈谤别产补蝉别て?惊くほと?简単に作れるリアルタイムイヘ?ントト?リフ?ンアフ?リ
Fumihiko Shiroyama
?
Laravel の学び方と得られる学び
Masaru Matsuo
?
尝补谤补惫别濒を使ってみた
Jaeseop Jeong
?
贵颈谤别产补蝉别て?のファイルアッフ?ロート?処理と便利ライフ?ラリの绍介
Fumiya Sakai
?
指の动きや迁移时等のアニメーションを生かした鲍滨のサンフ?ル解説
Fumiya Sakai
?
Ad

More from Masashi Shinbara (16)

PDF
日本语消えたスライド
Masashi Shinbara
?
PDF
Twilio入門 -Web アプリ編-
Masashi Shinbara
?
PDF
いまどきの笔贬笔開発現場 -2015年秋-
Masashi Shinbara
?
PDF
先取り!PHP 7 と WordPress
Masashi Shinbara
?
PDF
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Masashi Shinbara
?
PDF
How to learn Laravel5 application from Authentication
Masashi Shinbara
?
PDF
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
?
PDF
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
Masashi Shinbara
?
PDF
キャラ立ちしたエンジニアになる!
Masashi Shinbara
?
PDF
Composer 再入門
Masashi Shinbara
?
PDF
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
Masashi Shinbara
?
PDF
Vagrant を Web開発環境に使う
Masashi Shinbara
?
PDF
PHP 5.5 Zend OPcache
Masashi Shinbara
?
PDF
サーバの防灾训练
Masashi Shinbara
?
PDF
Kansai PHP Users Group 2012年活動報告
Masashi Shinbara
?
KEY
10分で分かる最近の颁补办别笔贬笔
Masashi Shinbara
?
日本语消えたスライド
Masashi Shinbara
?
Twilio入門 -Web アプリ編-
Masashi Shinbara
?
いまどきの笔贬笔開発現場 -2015年秋-
Masashi Shinbara
?
先取り!PHP 7 と WordPress
Masashi Shinbara
?
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Masashi Shinbara
?
How to learn Laravel5 application from Authentication
Masashi Shinbara
?
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
?
痴补驳谤补苍迟ユーザのための顿辞肠办别谤入门
Masashi Shinbara
?
キャラ立ちしたエンジニアになる!
Masashi Shinbara
?
Composer 再入門
Masashi Shinbara
?
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
Masashi Shinbara
?
Vagrant を Web開発環境に使う
Masashi Shinbara
?
PHP 5.5 Zend OPcache
Masashi Shinbara
?
サーバの防灾训练
Masashi Shinbara
?
Kansai PHP Users Group 2012年活動報告
Masashi Shinbara
?
10分で分かる最近の颁补办别笔贬笔
Masashi Shinbara
?
Ad

Recently uploaded (9)

PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PPTX
色について.pptx .
iPride Co., Ltd.
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
色について.pptx .
iPride Co., Ltd.
?

わかってるフレームワーク Laravel

  • 2. (c) 2014 Masashi Shinbara @shin1x1 開発している構成
  • 3. (c) 2014 Masashi Shinbara @shin1x1 開発している構成
  • 4. (c) 2014 Masashi Shinbara @shin1x1 開発している構成
  • 5. (c) 2014 Masashi Shinbara @shin1x1 マイグレーション わかってるなぁ
  • 6. マイグレーション (c) 2014 Masashi Shinbara @shin1x1 ? PHPコードで定義 ? ロールバックも可能 ? PostgreSQLで使える! ? ちゃんと実用できる
  • 7. マイグレーションファイル (c) 2014 Masashi Shinbara @shin1x1 public function up() { Schema::create('roles', function(Blueprint $table) { $table->increments('id'); $table->string('name'); }); } ? メソッド名が列の型 ? 引数が列名
  • 8. マイグレーションファイル (c) 2014 Masashi Shinbara @shin1x1 public function up() { Schema::create('users', function(Blueprint $table) { $table->increments('id'); $table->string('name')->unique(); $table->string('email')->unique(); $table->string('password'); $table->integer('role_id')->index(); $table->foreign(‘role_id') ->references(‘id')->on('roles') ->onUpdate('cascade'); $table->timestamps(); }); } ? インデックス、ユニーク制約、外部キー も設定可能
  • 9. マイグレーション実行 (c) 2014 Masashi Shinbara @shin1x1 ? マイグレーション実行 [up()] (過去に適用したファイルは適用されない) $ php artisan migrate ? マイグレーションロールバック [down()]? (直前に実施したマイグレーションのdown()を実行) $ php artisan migrate:rollback
  • 10. (c) 2014 Masashi Shinbara @shin1x1 データベースクエリ わかってるなぁ
  • 11. データベースクエリ (c) 2014 Masashi Shinbara @shin1x1 マニュアルのサンプルが、いきなり生SQL
  • 12. データベースクエリ (c) 2014 Masashi Shinbara @shin1x1 マニュアルのサンプルが、いきなり生SQL どんなSQLでも書ける安心感!
  • 13. データベースクエリ (c) 2014 Masashi Shinbara @shin1x1 ? クエリビルダ DB::table('roles')->where('name', '=', ‘Mike')->get(); ? Eloquent(ORM) Role::whereName('Mike')->first();
  • 14. データベースクエリ (c) 2014 Masashi Shinbara @shin1x1 ? WHERE ? IN ? AND / OR ? BETWEEN ? IS NULL ? OFFSET / LIMIT ? GROUP BY / HAVING ? JOIN / LEFT JOIN ? EXISTS ? COUNT() ? SUM() ? MAX() / MIN() / AVG() ? ? 豊富な表現力
  • 15. クエリビルダとEloquent (c) 2014 Masashi Shinbara @shin1x1 記法 レコード 複数レコード クエリビルダ SQLライク stdclass array() Eloquent ORM 自分自身 (ex. User クラス) Illuminate Database Eloquent Collection 実行できるクエリは、ほぼ同じ
  • 16. データベースコレクション (c) 2014 Masashi Shinbara @shin1x1 ? 取得した値をカンマで連結 Role::all()->implode('name', ‘,'); // role1,role2,role3 ? contains() ? each() ? ?lter() ? sortBy() ? map() ? sum() ? toArray() / toJson() ? and more…
  • 17. (c) 2014 Masashi Shinbara @shin1x1 バリデーション わかってるなぁ
  • 18. バリデーション (c) 2014 Masashi Shinbara @shin1x1 バリデーションルールの拡張が簡単 Validator::extend('fukuoka', function($attribute, $value, $parameters) { return $value === 'Fukuoka'; }); $rules = [ 'area' => 'fukuoka', ];
  • 19. バリデーション (c) 2014 Masashi Shinbara @shin1x1 条件が合致した時だけバリデートする $validator = Validator::make(Input::all(), $rules); $validator->sometimes('email_and_pass_unique', 'validate_rule', function($input) { if ($input->has('email') || $input->has('pass')) { return true; } return false; });
  • 20. (c) 2014 Masashi Shinbara @shin1x1 俺の好み わかってるなぁ
  • 21. Route::group (c) 2014 Masashi Shinbara @shin1x1 クロージャの意図を入れ子で表現 => 全てのルートで auth フィルタが有効 Route::group(['before' => 'auth'], function() { Route::get('/home', function() { // something }); Route::get('/', function() { // something }); });
  • 22. DB::transaction (c) 2014 Masashi Shinbara @shin1x1 クロージャ内に正常処理 => 自動で BEGIN => 例外が飛べば ROLLBACK? => 正常終了なら COMMIT DB::transaction(function() { DB::table('users')->insert(['name' => 'user-name']); DB::table('roles')->insert(['name' => 'role-name']); });
  • 23. (c) 2014 Masashi Shinbara @shin1x1 自由 わかってるなぁ
  • 24. クラスファイルの置き場 (c) 2014 Masashi Shinbara @shin1x1 ? オートローダーで読めればOK ? 名前空間を設定してもOK ? app/ 以下でなくてもOK
  • 25. フレームワーク拡張 (c) 2014 Masashi Shinbara @shin1x1 ? IoC コンテナでクラスを差し替える ? 気になるところはどんどん変更可 ? フィルタ、イベントハンドラ、 ? extend メソッドで拡張
  • 26. Laravel (c) 2014 Masashi Shinbara @shin1x1 こんなふうに考えてください。 アプリケーションは Laravel フレーム ワークの実装ではありませ ん。 逆に、Laravel が私達のアプリケーショ ンの実装なのです。 Implementing Laravel 日本語版
  • 27. (c) 2014 Masashi Shinbara @shin1x1 まとめ Laravel わかってるなぁ
  • 28. @shin1x1 (c) 2014 Masashi Shinbara @shin1x1