CakePHPでデータ操作 〜担当者アサイン機能の実装〜 AWS上で構築するRESTfulアプリ勉強会 ~Web開発ワークショップ~【第6回】
要は、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)
Lesson1 サーバサイド開発■belongsTo
idtodoownerassignee
todo_listsid
usernamename
password
users属している (belongsTo)
public $belongsTo = array ( 'Owner' => array ( 'className' => 'User', 'foreignKey' => 'owner', ), 'Assignee' => array ( 'className' => 'User', 'foreignKey' => 'assignee' ) );
Lesson1 サーバサイド開発■belongsTo・TodoList.php
■hasOne
idtodoownerassignee
todo_listsid
usernamename
password
users1つ持つ (hasOne)
Lesson1.5 アソシエーションの実験
※ホントは1:nですが無理にやってみます!
■hasOne
idtodoownerassignee
todo_listsid
usernamename
password
users1つ持つ (hasOne)
Lesson1.5 アソシエーションの実験
※ホントは1:nですが無理にやってみます!
(ウソ)
public $hasOne = array ( 'TodoList' => array ( 'className' => 'TodoList', 'foreignKey' => 'owner' ) );
■hasOne・User.php
Lesson1.5 アソシエーションの実験
■hasMany
idtodoownerassignee
todo_listsid
usernamename
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 アソシエーションの実験
変わるのはここだけ!
■ユーザ一覧情報の取得と表示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