SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
CakePHPでデータ操作
〜担当者アサイン機能の実装〜
AWS上で構築するRESTfulアプリ勉強会
~Web開発ワークショップ~【第6回】
概要
概要
1. アソシエーションとは
2. やりたいこと
3. 今回追加する機能
概要
1. アソシエーションとは
2. やりたいこと
3. 今回追加する機能
「アソシエーション」
=Model間の関連をマッ
ピングしてくれる機能
要は、SQLを書かずに
済ませて楽をする方法
SELECT
User.id, User.username, User.password,
User.name, TodoList.id, TodoList.todo,
TodoList.status, TodoList.owner,
TodoList.assignee
FROM users AS User
LEFT JOIN todo_lists AS TodoList
ON (TodoList.owner = User.id)
楽をする
=SQLを書かずにコードで
書く
→CakePHPがよろしくやっ
てくれる!
詳しくは後ほど!
概要
1. アソシエーションとは
2. やりたいこと
3. 今回追加する機能
TODOリストアプリの
マルチユーザ対応!
(しょぼいですけど…)
概要
1. ログインとは
2. やりたいこと
3. 今回追加する機能
今回追加する機能
1. TODO追加時に担当者を指
定する
2. 更新時担当者を変えられる
3. 担当者、オーナのみ○○出
来る
担当者を指定
担当者を変える
担当者、オーナのみ○○出来る
担当またはオーナ
だけ操作可能
ワークショップ
本日のメニュー
1. 事前準備
2. Lesson1
サーバサイド開発
3. Lesson1.5
アソシエーションの実験
4. Lesson2
クライアントサイド開発
事前準備
• gitのブランチを整える
• テーブルに列を追加する
gitのブランチを整える
■masterブランチを前回の内容
を終えた状態にする
■masterブランチを元に、今回
の作業用である、
「vol/06」ブランチを作成する
どう整えるのか
人によって手順が違い
ます!(重要)
■前回の内容を途中までやった方
■前回の内容を完了した方
■今回から参加の方
gitのブランチを整える
http://
goo.gl/WEHXqX
ジーオーオー.ジーエル/
ダブリューイーエイチエックスキューエックス
ここに詳しく
書いております!
テーブルに列を追加する
■phpMyAdminを使用する
TODO一覧登録用テーブル
 「todo_lists」に列を追加
■追加項目は、
•owner(オーナ)
•assignee(担当者)
phpMyAdmin
http://(PublicIP)/phpMyAdmin
・修正後テーブル(詳しくはQiita資料で!)
アソシエーション
を実装!
Lesson1
 サーバサイド開発
Lesson1 サーバサイド開発
■今回使用するアソシエーション
belongsTo
Lesson1 サーバサイド開発
■他は?
• hasOne
• hasMany
• hasAndBelongsToMany
Lesson1 サーバサイド開発
■他は?
• hasOne
• hasMany
• hasAndBelongsToMany
Lesson1.5
で実験します!
Lesson1 サーバサイド開発
■他は?
• hasOne
• hasMany
• hasAndBelongsToMany
今回はパス!
Lesson1.5
で実験します!
Lesson1 サーバサイド開発
■belongsTo
id
todo
owner
assignee
todo_lists
id
username
name
password
users
属している
(belongsTo)
public $belongsTo = array (
'Owner' => array (
'className' => 'User',
'foreignKey' => 'owner',
),
'Assignee' => array (
'className' => 'User',
'foreignKey' => 'assignee'
)
);
Lesson1 サーバサイド開発
■belongsTo
・TodoList.php
Lesson1.5
 アソシエーションの実験
•hasOne(1:1)
•hasMany(1:n)
■hasOne
id
todo
owner
assignee
todo_lists
id
username
name
password
users
1つ持つ
(hasOne)
Lesson1.5 アソシエーションの実験
※ホントは1:nですが無理にやってみます!
■hasOne
id
todo
owner
assignee
todo_lists
id
username
name
password
users
1つ持つ
(hasOne)
Lesson1.5 アソシエーションの実験
※ホントは1:nですが無理にやってみます!
(ウソ)
public $hasOne = array (
'TodoList' => array (
'className' => 'TodoList',
'foreignKey' => 'owner'
)
);
■hasOne
・User.php
Lesson1.5 アソシエーションの実験
■hasMany
id
todo
owner
assignee
todo_lists
id
username
name
password
users
いくつか持つ
(hasMany)
Lesson1.5 アソシエーションの実験
public $hasMany = array (
'TodoList' => array (
'className' => 'TodoList',
'foreignKey' => 'owner'
)
);
■hasMany
・User.php
Lesson1.5 アソシエーションの実験
public $hasMany = array (
'TodoList' => array (
'className' => 'TodoList',
'foreignKey' => 'owner'
)
);
■hasMany
・User.php
Lesson1.5 アソシエーションの実験
変わるのはここだけ!
詳しい方法はQiita
の資料で!
Lesson1.5 アソシエーションの実験
Lesson2に進む
前に、ソースを元
に戻しましょう!
Lesson1.5 アソシエーションの実験
なんやかんや
実装!
Lesson2
 クライアントサイド開発
前回までの内容で
ほぼいけるはず!
※少しだけポイント紹介
Lesson2 クライアントサイド開発
■ユーザ一覧情報の取得と表示
Lesson2 クライアントサイド開発
•ユーザ一覧情報を取得
・todo-layout-view.js
・todo-composite-view.js
•ユーザ一覧情報を表示
取得したユーザ情報
■ユーザ一覧情報の取得と表示
Lesson2 クライアントサイド開発
•ユーザ一覧情報を取得
・todo-layout-view.js
・todo-composite-view.js
•ユーザ一覧情報を表示
取得したユーザ情報 ビュー生成
時に渡す
onRender : function() {
this.userCollection = new UserCollection();
this.listenTo(this.userCollection,
'reset', this.onLoadUsers, this);
this.userCollection.fetch({reset : true});
},
■ユーザ一覧情報の取得
Lesson2 クライアントサイド開発
ビューの生成前に取得
・todo-layout-view.js
showTodoList : function(todoCollection){
this.listRegion.show( new TodoCompositeView({
collection : todoCollection,
userList : this.userCollection.models
}));
},
■ユーザ一覧情報の取得
Lesson2 クライアントサイド開発
ビューの生成時に取得済
みデータを渡す
・todo-layout-view.js
//ユーザ一覧を表示
showUserList : function($list, userList){
$.each(userList, function(index, userModel) {
$list.append(
"<option value='"
+ userModel.attributes.id + "'>"
+ userModel.attributes.name + "</option>");
});
},
■ユーザ一覧の表示
Lesson2 クライアントサイド開発
ループ回してタグ挿入
・todo-composite-view.js
マニュアル(Qiita)
http://
goo.gl/sIvvDG
ジーオーオー.ジーエル/
エスアイブイブイディージー
マニュアル(Qiita)
http://
goo.gl/sIvvDG
ジーオーオー.ジーエル/
エスアイブイブイディージー
はじめましょう!
絞込み1(チェックボックス)
• 自分がオーナ
• 自分が担当
絞込2(リストボックス)
• 全て
• 未完了のみ
• 完了済みのみ
🍻飲みDev🍕 テーマリスト1
hasAndBelongsToManyの実験
🍻飲みDev🍕 テーマリスト2
id
todo
owner
assignee
todo_lists
id
username
name
password
users
(owner)
id
username
name
password
users
(assignee)

Weitere ähnliche Inhalte

Was ist angesagt?

AWS Elastic Beanstalk のススメ
AWS Elastic Beanstalk のススメAWS Elastic Beanstalk のススメ
AWS Elastic Beanstalk のススメ
Taiji INOUE
 
CloudWatch Eventを使ったamiの削除
CloudWatch Eventを使ったamiの削除CloudWatch Eventを使ったamiの削除
CloudWatch Eventを使ったamiの削除
淳 千葉
 
Developers.io meetup 01 2013/12/10
Developers.io meetup 01 2013/12/10Developers.io meetup 01 2013/12/10
Developers.io meetup 01 2013/12/10
Tomonari Fukuda
 

Was ist angesagt? (20)

AWS Elastic Beanstalk のススメ
AWS Elastic Beanstalk のススメAWS Elastic Beanstalk のススメ
AWS Elastic Beanstalk のススメ
 
Aws certificate managerを使ってみたよ
Aws certificate managerを使ってみたよAws certificate managerを使ってみたよ
Aws certificate managerを使ってみたよ
 
Amazon EKS への道 ~入門編~
Amazon EKS への道 ~入門編~Amazon EKS への道 ~入門編~
Amazon EKS への道 ~入門編~
 
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
 
The Internal of Serverless Plugins
The Internal of Serverless PluginsThe Internal of Serverless Plugins
The Internal of Serverless Plugins
 
Serverless Meetup Tokyo #1 オープニング
Serverless Meetup Tokyo #1 オープニングServerless Meetup Tokyo #1 オープニング
Serverless Meetup Tokyo #1 オープニング
 
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
 
Stm vol3 awsで落ちないwebサービスを構築
Stm vol3 awsで落ちないwebサービスを構築Stm vol3 awsで落ちないwebサービスを構築
Stm vol3 awsで落ちないwebサービスを構築
 
もしお金を支払わなかった時、あなたに何がおきますか?
もしお金を支払わなかった時、あなたに何がおきますか?もしお金を支払わなかった時、あなたに何がおきますか?
もしお金を支払わなかった時、あなたに何がおきますか?
 
ACMで作成するSSL証明書の活用
ACMで作成するSSL証明書の活用ACMで作成するSSL証明書の活用
ACMで作成するSSL証明書の活用
 
20131210 classmethod re:Growth session04
20131210 classmethod re:Growth session0420131210 classmethod re:Growth session04
20131210 classmethod re:Growth session04
 
WordPress と Azure の素敵な関係 version 3.6
WordPress と Azure の素敵な関係 version 3.6WordPress と Azure の素敵な関係 version 3.6
WordPress と Azure の素敵な関係 version 3.6
 
第10回rest勉強会 リファクタリング(サーバ編)編
第10回rest勉強会 リファクタリング(サーバ編)編第10回rest勉強会 リファクタリング(サーバ編)編
第10回rest勉強会 リファクタリング(サーバ編)編
 
CloudWatch Eventを使ったamiの削除
CloudWatch Eventを使ったamiの削除CloudWatch Eventを使ったamiの削除
CloudWatch Eventを使ったamiの削除
 
Developers.io meetup 01 2013/12/10
Developers.io meetup 01 2013/12/10Developers.io meetup 01 2013/12/10
Developers.io meetup 01 2013/12/10
 
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012
 
第11回rest勉強会 リファクタリング(クライアント編)
第11回rest勉強会 リファクタリング(クライアント編)第11回rest勉強会 リファクタリング(クライアント編)
第11回rest勉強会 リファクタリング(クライアント編)
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
Jawsug elastic beanstalk_150207
Jawsug elastic beanstalk_150207Jawsug elastic beanstalk_150207
Jawsug elastic beanstalk_150207
 
JAWSUG Kansai Simple Workflow Service (SWF)
JAWSUG Kansai Simple Workflow Service (SWF)JAWSUG Kansai Simple Workflow Service (SWF)
JAWSUG Kansai Simple Workflow Service (SWF)
 

Ähnlich wie 第6回rest勉強会 アソシエーション編

Web Workers
Web WorkersWeb Workers
Web Workers
kaboccha
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
Developers Summit
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
 

Ähnlich wie 第6回rest勉強会 アソシエーション編 (20)

Azure Functions 入門
Azure Functions 入門Azure Functions 入門
Azure Functions 入門
 
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
LocalStack
LocalStackLocalStack
LocalStack
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
Ext.direct
Ext.directExt.direct
Ext.direct
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Web Workers
Web WorkersWeb Workers
Web Workers
 
LogicFlow 概要
LogicFlow 概要LogicFlow 概要
LogicFlow 概要
 
Hybrid serverless architecture using open whisk ibm cloud functions and istio...
Hybrid serverless architecture using open whisk ibm cloud functions and istio...Hybrid serverless architecture using open whisk ibm cloud functions and istio...
Hybrid serverless architecture using open whisk ibm cloud functions and istio...
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
Web技術勉強会第1回目
Web技術勉強会第1回目Web技術勉強会第1回目
Web技術勉強会第1回目
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
OSC2014.Enterprise Zabbix-JobScheduler連携ツールHyClopsJobMonitoringによる運用システムOSS化の実現
 

第6回rest勉強会 アソシエーション編