スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
by MONOKo  at --:-- |  スポンサー広告 |   |   |  page top ↑

テーブル名は?

テーブル名など複数形で名前をつける規約があります
単数形を入力すると、複数形を表示してくれます。

CakePHP 規約ワードメーカー

便利です!
スポンサーサイト
by MONOKo  at 13:48 |  models |  comment (0)  |  trackback (0)  |  page top ↑

アソシエーション

CREATE TABLE users(
	id int unsigned auto_increment primary key,
	name varchar(30) NOT NULL,
	created datetime default NULL,
	modified datetime default NULL
);

CREATE TABLE posts(
	id int unsigned auto_increment primary key,
	user_id int,
	comment text,
	created datetime default NULL,
	modified datetime default NULL
);
usersテーブルのみの場合のSQLは(条件なし)
SELECT `User`.`id`, `User`.`name`, `User`.`created`, `User`.`modified` FROM `users` AS `User` WHERE 1 = 1 

1対1のアソシエーション hasOne です。
user.php
<?php
class User extends AppModel
{
	public $name = 'Users';
	public $hasOne = array(
			'Posts' => array(
			'className' => 'Posts',
			'foreignKey' => 'user_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
		)
	);
}
?>
SQLは
SELECT `User`.`id`, `User`.`name`, `User`.`created`, `User`.`modified`,   `Posts`.`id`, `Posts`.`user_id`, `Posts`.`comment`, `Posts`.`created`,   `Posts`.`modified` FROM `users` AS `User` LEFT JOIN `posts` AS `Posts` ON   (`Posts`.`user_id` = `User`.`id`) WHERE 1 = 1 

1対多のアソシエーション hasMany です。
user.php
<?php
class User extends AppModel {
	var $name = 'User';
	var $hasMany = array(
			'Post' => array(
				'className' => 'Post',
				'foreignKey' => 'user_id',
				'dependent' => false,
				'conditions' => '',
				'fields' => '',
				'order' => '',
				'limit' => '',
				'offset' => '',
				'exclusive' => '',
				'finderQuery' => '',
				'counterQuery' => ''
			)
	);
}
?>
users_controller.php
$this->set('user_data', $this->User->find('all'));
by MONOKo  at 12:25 |  models |  comment (0)  |  trackback (0)  |  page top ↑
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。