自分用メモ
cakephp 1.3 テーブルの連結
■テーブルを連結 $hasOne してデータ取得するまで
------------------------------------------------------------
データベースにmembersテーブルと連結するProfilesテーブルを作成
------------------------------------------------------------
mysql>
CREATE TABLE profiles (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, member_id INT UNSIGNED UNIQUE, freetext VARCHAR(200));
INSERT INTO profiles (id, member_id, freetext) VALUES (0,'4','FREEEEEEEEE'); # サンプルデータ
------------------------------------------------------------
※テーブル名に複数形sがついていることに注意
※profiles テーブルの id カラムと連結させるのは members テーブルのidと指定
------------------------------------------------------------
モデル
------------------------------------------------------------
$ vi app/models/member.php
------------------------------------------------------------
class Member extends AppModel
{
var $name = 'Member';
var $hasOne = array(
'Profile' =>
array(
'className' => 'Profile',
'conditions' => '',
'order' => '',
'dependent' => true,
'foreignKey' => 'member_id'
)
);
}
------------------------------------------------------------
コントローラ
------------------------------------------------------------
$ vi app/controllers/member_controller.php
------------------------------------------------------------
<?php
class MemberController extends AppController
{
function index()
{
$results = $this->Member->find('first', array('conditions'=>array('Member.id'=>4)));
$this->set('results', $results);
//var_dump($results);
}
}
------------------------------------------------------------
ビュー
------------------------------------------------------------
$ vi app/views/member/index.ctp
------------------------------------------------------------
<li><?php echo $results['Member']['id']; ?></li>
<li><?php echo $results['Member']['name']; ?></li>
<li><?php echo $results['Profile']['id']; ?></li>
<li><?php echo $results['Profile']['member_id']; ?></li>
<li><?php echo $results['Profile']['freetext']; ?></li>
------------------------------------------------------------