CakePHP ヘルパーã®å‡ºåŠ›ã‚’ echo を使ã‚ãšã«å‡ºåŠ›ã™ã‚‹æ–¹æ³•

CakePHP 1 Comment »

※ã“ã®æŠ•ç¨¿ã®æ–¹æ³•ã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³1.1 ã¾ã§ã—ã‹ä½¿ç”¨ã§ããªã„よã†ã§ã™ã€‚1.2 ã®ã‚½ãƒ¼ã‚¹ã‚’確èªã—ãŸã¨ã“ã‚ã€$html->input ã®$return パラメータã¯ãªããªã£ã¦ã„ã¾ã—ãŸã€‚/app/config/core.php ã« AUTO_OUTPUT ã¨ã„ã†å®šæ•°ã‚‚ãªããªã£ã¦ã„ã¾ã—ãŸã€‚ã”æ³¨æ„ãã ã•ã„。

Cakephp ã®ãƒ˜ãƒ«ãƒ‘ーを使用ã—ã¦ã„ã¦
<?php echo $html->input('Model/filed', array()); ?>ã¨æ›¸ãã¨ã“ã‚ã‚’
<?php $html->input('Model/field', array()); ?>㨠echo を使用ã›ãšã«å‡ºåŠ›ã™ã‚‹ã«ã¯
/app/config/core.php
AUTO_OUTPUT = true;ã«ã™ã‚Œã°ã€è‡ªå‹•çš„ã«å‡ºåŠ›ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚

ç§ã¯ã¤ã„ echo を書ã忘れã¦ã—ã¾ã†ã®ã§åŠ©ã‹ã‚Šã¾ã™ã€‚

ヘルパーã®ãƒ¡ã‚½ãƒƒãƒ‰ã® $return パラメータを true ã«ã™ã‚‹ã¨ã“ã® AUTO_OUTPUT を無効ã«ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
ãŸã ã€å„メソッドã«ã‚ˆã£ã¦ã€$return パラメータã®ä½ç½®ãŒãƒãƒ©ãƒãƒ©ãªã®ã§ã€æ›¸ãã¨ãã«ã¯ãƒ˜ãƒ«ãƒ‘ーã®ã‚½ãƒ¼ã‚¹ã‚’確èªã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã¨æ€ã„ã¾ã™ã€‚

ã¡ãªã«ã¿ã« input ã®å ´åˆã¯
<?php $html->input('Model/field', array(), true); ?>ã¨ã™ã‚‹ã¨è‡ªå‹•出力を抑止ã§ãã¾ã™ã®ã§ã€ä¸Šè¨˜ã¯ä½•も表示ã•れãªããªã‚Šã¾ã™ã€‚

CakePHP 日本語マニュアル
1ï¼ç« ã€€ãƒ˜ãƒ«ãƒ‘ー

CakePHP アソシエーションã®ã¾ã¨ã‚(4)

CakePHP No Comments »

ã¾ã¨ã‚(1) ã§ã¯1対1ã®ã‚¢ã‚½ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ hasOne ã§ã—ãŸãŒã€
今回ã¯1対多ã®ã‚¢ã‚½ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ hasMany ã§ã™ã€‚

例ãˆã°ã€ä¸€äººã®ãƒ¦ãƒ¼ã‚¶ã«è¤‡æ•°ã®ã‚³ãƒ¡ãƒ³ãƒˆæŠ•稿ãŒã‚るよã†ãªå ´åˆã§ã™ã€‚
データベースã¯

CREATE TABLE users(
    id int unsigned auto_increment primary key,
    nickname 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 unsigned unique,
    comment text,
    created datetime default NULL,
    modified datetime default NULL
);

ã®ã‚ˆã†ãªå ´åˆã€ã‚¢ã‚½ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã®å®šç¾©ã¯ä¸‹è¨˜ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚

< ?php
class User extends AppModel
{
    var $name = 'User';
    var $hasMany = array('Post' =>
                    array('className' => 'Post',
                          'conditions' => '',
                          'order' => '',
                          'foreignKey' => 'user_id',
                          'dependent' => true,
                          'exclusive' => false,
                          'finderQuery' => ''
                    )
                  );
}
?>

ã“れã§ã€
$this->User->findById($id);
ã¨ã™ã‚‹ã¨ä¸‹è¨˜ã®ã‚ˆã†ã«ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã§ãã¾ã™ã€‚

Array
(
    [User] => Array
        (
            [id] => 1
            [nickname] => boze
        )
    [Post] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [user_id] => 1
                    [comment] => コメント1ã§ã™
                )
            [1] => Array
                (
                    [id] => 1
                    [user_id] => 1
                    [comment] => コメント2ã§ã™
                )
            ....
        )
);

ã¾ãŸã€hasOne ãªã©ã¨åŒæ§˜ã« CakePHP ã®å‘½åè¦ç´„ã«å¾“ã£ã¦ã„れã°ã€foreignKey ã¯æŒ‡å®šã—ãªãã¦ã‚‚大丈夫ã§ã™ã®ã§ã€æœ€ä½Žé™
var $hasMany = array('Post');
ã§ã‚‚アソシエーションを定義ã§ãã¾ã™ã€‚

ã¾ãŸã€hasMany ã§æŒ‡å®šã™ã‚‹é…åˆ—ã®æ„味ã¯ä¸‹è¨˜ã®é€šã‚Šã§ã™ã€‚

className
関連付ã‘ãŸã„モデルã®ã‚¯ãƒ©ã‚¹å

conditions
hasMany ã§å–å¾—ã—ãŸã„ãƒ‡ãƒ¼ã‚¿ã®æ¡ä»¶ã‚’指定ã™ã‚‹ã€‚ SQL ã®æ¡ä»¶æ–‡ã€‚

order
関連ã™ã‚‹ãƒ¢ãƒ‡ãƒ«ã®ãƒ‡ãƒ¼ã‚¿ã®ä¸¦ã³é †ã€‚SQL ã® ORDER å¥ã®æŒ‡å®šæ–¹æ³•。
Post.created DESC
テーブルåをカラムåã®å‰ã«ä»˜ã‘ãªã„ã¨ã€User.created ã¨åŒºåˆ¥ã§ãã¾ã›ã‚“。

limit
Cake ãŒå–り出ã™é–¢é€£ãƒ¢ãƒ‡ãƒ«ã®ãƒ‡ãƒ¼ã‚¿ã®æœ€å¤§æ•°ã€‚
‘limit’ => 5 ã®ã‚ˆã†ã«æ•°å­—ã§æŒ‡å®šã€‚

foreignKey
関連ã—ã¦ã„るモデルを指ã—ã¦ã„る外部キーã®åå‰ã€‚
Cake ã®å‘½åè¦ç´„ã«å¾“ã£ã¦ã„ã‚‹å ´åˆã¯çœç•¥å¯èƒ½ã€‚従ã£ã¦ã„ãªã„å ´åˆã¯ã“ã“ã§æŒ‡å®šã™ã‚‹ã€‚

dependent
true ã«è¨­å®šã™ã‚‹ã¨ã€ãƒ¢ãƒ‡ãƒ«ã®ãƒ‡ãƒ¼ã‚¿ã®å‰Šé™¤æ™‚ã«é–¢é€£ã—ã¦ã„るモデルå´ã®ãƒ‡ãƒ¼ã‚¿ã‚‚削除ã•れる。

exclusive
true ã«è¨­å®šã™ã‚‹ã¨ã€é–¢é€£ã—ã¦ã„ã‚‹ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトãŒä¸€ã¤ã® SQL ステートメントã§å‰Šé™¤ã•れる。

finderQuery
アソシエーションをå–り出ã™ãŸã‚ã«ã€å®Œå…¨ãª SQL ステートメントを指定ã™ã‚‹ã€‚

CakePHP 日本語マニュアル
6.4. アソシエーション

PHP ã®ä¾¿åˆ©ãªé–¢æ•°ã€€output_add_rewrite_var

PHP No Comments »

PHP ã‹ã‚‰å‡ºåŠ›ã™ã‚‹ HTML ã«æœ€çµ‚的㫠a ã‚¿ã‚°ã‚„ form タグを見ã¤ã‘出ã—ã€è‡ªå‹•ã§æŒ‡å®šã—ãŸå¤‰æ•°ã‚’クエリストリングや hidden å±žæ€§ã§æŒ¿å…¥ã—ã¦ãれる関数ã§ã™ã€‚

PHP4.3 ã‹ã‚‰è¿½åŠ ã•れãŸã‚ˆã†ãªã®ã§ã™ãŒçŸ¥ã‚‰ãªã‹ã£ãŸã§ã™ã€‚
昔ã‹ã‚‰ã€session.use_trans_sid ã¨ã„ã†ã‚»ã‚·ãƒ§ãƒ³ID ã‚’ a ã‚¿ã‚°ã‚„ form ã‚¿ã‚°ã® hidden 属性ã«è¿½åŠ ã—ã¦ãれるã®ã¯ã‚りã¾ã—ãŸãŒã€ãれをセションID 以外ã«ã‚‚使用ã§ãるよã†ã«é–¢æ•°åŒ–ã—ãŸã‚‚ã®ã®ã‚ˆã†ã§ã™ã€‚

URL ãƒªãƒ©ã‚¤ãƒˆæ©Ÿæ§‹ã«æ–°ã—ã„åå‰/値ã®çµ„を追加ã—ã¾ã™ã€‚ åå‰ãŠã‚ˆã³å€¤ã¯ã€URL (GET パラメータã¨ã—ã¦) ãŠã‚ˆã³ãƒ•ォーム (hidden フィールドã¨ã—ã¦) ã§è¿½åŠ ã•れã¾ã™ã€‚ã“れã¯ã€session.use_trans_sid ã§é€éŽçš„ URL ãƒªãƒ©ã‚¤ãƒ†ã‚£ãƒ³ã‚°ãŒæœ‰åйã«ãªã£ã¦ã„ã‚‹å ´åˆã« セッション ID ãŒæ¸¡ã•れる方法ã¨åŒã˜ã§ã™ã€‚ 絶対 URL (http://example.com/..) ã¯ãƒªãƒ©ã‚¤ãƒˆã•れãªã„ã“ã¨ã«æ³¨æ„ã—ã¾ã—ょã†ã€‚

- PHP マニュアルより

userid ã®å€¤ $userid ã‚’å…¨ã¦ã®ãƒªãƒ³ã‚¯ã«ä»˜ä¸Žã—ãŸã„å ´åˆã¯ã€
output_add_rewite_var('userid', $userid);ã¨æ›¸ãã“ã¨ã«ã‚ˆã‚Š
<a href="index.php">TOP</a>ãŒ
<a href="index.php?userid=1">TOP</a>ã¨å‡ºåŠ›ã•れã¾ã™ã€‚

form ã‚¿ã‚°ã‚‚
<form action="index.php" method="post">ãŒ
<input type="hidden" name="userid" value="1">ã¨ãªã‚Šã¾ã™ã€‚

注æ„点ã¨ã—ã¦ã¯çµ¶å¯¾URLã¯ã‚Šãƒ©ã‚¤ãƒˆã•れãªã„ã“ã¨ã§ã™ã€‚
ã“れãŒãªã„ã¨ä»–サイトã«ã¾ã§ã€ã‚»ã‚·ãƒ§ãƒ³ID ãªã©ã‚’渡ã—ã¦ã—ã¾ã„ã¾ã™ã‹ã‚‰ã­ã€‚

PHP マニュアル
output_add_rewrite_var

CakePHP アソシエーションã®ã¾ã¨ã‚(3)

CakePHP No Comments »

今回㯠belongsTo ã§ã™ã€‚
CakePHP アソシエーションã®ã¾ã¨ã‚(1) ã§ hasOne をやりã¾ã—ãŸãŒã€belongsTo ã¯ãã®é€†ã§ã™ã€‚

ã¾ã¨ã‚(1) ã§ä½¿ç”¨ã—ãŸãƒ†ãƒ¼ãƒ–ルã§èª¬æ˜Žã™ã‚‹ã¨ã€Profile モデルã«User モデルを関連付ã‘ã‚‹ã®ãŒ belongsTo ã«ãªã‚Šã¾ã™ã€‚

profile.php

<?php
class Profile extends AppModel {
    var $name = 'Profile';
    var $belongsTo = array('User' =>
                        array('className'  => 'User',
                              'conditions' => '',
                              'order'      => '',
                              'foreignKey' => 'user_id'
                        )
                      );
}
?>

é…列ã®ãれãžã‚Œã®æ„味㯠CakePHP アソシエーションã®ã¾ã¨ã‚(2) ã«èª¬æ˜ŽãŒã‚りã¾ã™ã€‚

ã“れã§ã€
$this->profile->findById($id);
ã¨ã‹ã™ã‚‹ã¨ã€Profile モデルã®è©²å½“ã™ã‚‹ID ã®ãƒ‡ãƒ¼ã‚¿å†…容ã¨ãã®Profile モデルã®å…ƒã® User モデルã®ãƒ‡ãƒ¼ã‚¿ãŒå–å¾—ã§ãã¾ã™ã€‚

ã‚‚ã¡ã‚ã‚“ã€CakePHP ã®å‘½åè¦å‰‡ã«å¾“ã£ã¦ã„れã°ã€

profile.php

<?php
class Profile extends AppModel {
    var $name = 'Profile';
    var $belongsTo = array('User');
}

?>

ã§ã‚‚ã„ã‘ã¾ã™ã€‚

6.4. アソシエーション

WordPress ã§ã‚¿ã‚°ã‚’使ãˆã‚‹ã‚ˆã†ã«ã—ã¦ã¿ãŸ

WordPress 1 Comment »

使用ã—ãŸãƒ—ラグイン㯠Simple Tagging ã§ã™ã€‚

WordPress用ã€ã‚¿ã‚°ä»˜ã‘プラグイン:Simple Tagging | 創造マラソン
ã“ã¡ã‚‰ã®ã‚µã‚¤ãƒˆã§ã‹ãªã‚Šè©³ã—ã解説ã•れã¦ã„ã¾ã™ã€‚

Single.php ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼æœ¬æ–‡ã®å¾Œã«
<?php STP_PostTags(); ?>
を入れã¦ã€ã‚¿ã‚°ã‚’表示ã•ã›ã€ã•らã«
< ?php STP_RelatedPosts(); ?>
ã§ã‚¿ã‚°ã«ã‚ˆã‚Šã€é–¢é€£ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’表示ã•ã›ã‚‹ã‚ˆã†ã«ã—ã¾ã—ãŸã€‚
ã¾ãŸã€ã‚µã‚¤ãƒ‰ãƒãƒ¼ã«
< ?php STP_Tagcloud(); ?>
を入れã¦ã‚¿ã‚°ã‚¯ãƒ©ã‚¦ãƒ‰ã‚’表示ã•ã›ã¾ã—ãŸã€‚
ãŸã ã€ã“ã®ã¾ã¾ã§ã¯ãƒªã‚¹ãƒˆæ§‹é€ ã§ç¸¦ã«ä¸¦ã‚“ã§ã—ã¾ã†ã®ã§ã€

Tag Cloud – Simple Tagging for WordPress – Trac
ã“ã¡ã‚‰ã‚’å‚考ã«ä¸‹è¨˜ã‚’追加ã—ã¾ã—ãŸã€‚

style.css

ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; }
ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;}
ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; }
ul#tagcloud li a:hover { text-decoration:underline; }
ul#tagcloud li.t1 a { color:#797979; font-size: 120%; }
ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; }
ul#tagcloud li.t3 a { color:#616161; font-size: 190%; }
ul#tagcloud li.t4 a { color:#555555; font-size: 210%; }
ul#tagcloud li.t5 a { color:#484848; font-size: 230%; }
ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; }
ul#tagcloud li.t7 a { color:#303030; font-size: 270%; }
ul#tagcloud li.t8 a { color:#242424; font-size: 290%; }
ul#tagcloud li.t9 a { color:#181818; font-size: 310%; }
ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; }

é¡”ãƒã‚§ã‚­ã‚’試ã—ã¦ã¿ãŸ

æºå¸¯é›»è©± No Comments »

最近話題ã®é¡”ãƒã‚§ã‚­ã‚’試ã—ã¦ã¿ã¾ã—ãŸã€‚

知らãªã„æ–¹ã®ãŸã‚ã«ç°¡å˜ã«èª¬æ˜Žã™ã‚‹ã¨æºå¸¯ã‹ã‚‰è‡ªåˆ†ã®é¡”写真をé€ã‚‹ã¨æœ‰å人ã§èª°ã«ä¼¼ã¦ã„ã‚‹ã‹åˆ¤å®šã—ã¦ãれるã¨ã„ã†ã‚±ãƒ¼ã‚¿ã‚¤ã‚µã‚¤ãƒˆã§ã™ã€‚

ã§ã€çµæžœã¯

  1. 濱å£å„ªã€€63%
  2. 平泉æˆã€€61%
  3. 山壿™ºå…… 60%

ã©ã‚Œã‚‚言ã‚れãŸã“ã¨ãªã„ãªã。平泉æˆã•ã‚“ã£ã¦çŸ¥ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚

ã¡ãªã¿ã«ã‚¦ãƒã®ç›¸æ–¹ã¯

  1. 沢尻エリカ 51%
  2. 観月ã‚りã• 48%
  3. 紺野ã¾ã²ã‚‹ã€€48%

ã§ã—ãŸã€‚ã“ã¡ã‚‰ã‚‚ã©ã‚Œã‚‚言ã‚れãŸã“ã¨ãªã„ãã†ã§ã™ã€‚

ã§ã€ã“れã£ã¦æœ¬äººã ã£ãŸã‚‰ã©ã†ãªã‚“ã ã‚ã†ï¼Ÿã¨æ€ã„ã€æ¿±å£ã®å†™çœŸã§è©¦ã—ã¦ã¿ã¾ã—ãŸã€‚
使ã£ãŸå†™çœŸã¯ã“ã¡ã‚‰ã§ã™ã€‚
çµæžœã¯

  1. 濱å£å„ªã€€71%
  2. 森山未來 46%
  3. å°æž—隆 43%

ã§ã—ãŸã€‚ã‚„ã£ã±ã‚Šæœ¬äººã¯æœ¬äººã§ã—ãŸã€‚確ã‹ã«æ¿±å£å„ªã¨æ£®å±±æœªä¾†ã¯ä¼¼ã¦ã„ã‚‹ã¨æ€ã†ã€‚

ã„よã„よ PHP5 ã¸ã®ç§»è¡ŒãŒé€²ã‚€ã‹

PHP No Comments »

Do You PHP ã¯ã¦ãª – PHP4ã¸ã®æœ€å¾Œé€šå‘Š

ã¤ã„ã«æ¥ã¾ã—ãŸã‹ã€‚。。2007/12/31ã„ã£ã±ã„ã¯ã‚µãƒãƒ¼ãƒˆã‚’ç¶šã‘ã€2008/08/08ã¾ã§ã¯è‡´å‘½çš„ãªã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£FIXã®ã¿è¡Œã†ã‚ˆã†ã§ã™ã€‚

最近ã®é–‹ç™ºã§ã¯ PHP5 ãŒå¢—ãˆã¦ãã¾ã—ãŸã—ã€ã„よã„よPHP5 ã¸ã®ç§»è¡ŒãŒåŠ é€Ÿã—ãã†ã§ã™ã­ã€‚
個人的ã«ã¯PHP5 ã¯å¤§æ­“迎ã§ã™ã€‚

WordPress ã«ã€Œã¯ã¦ãªã‚¹ã‚¿ãƒ¼ã€ã‚’å°Žå…¥ã—ã¦ã¿ã¾ã—ãŸ

WordPress No Comments »

ã¯ã¦ãªã‚¹ã‚¿ãƒ¼ã‚’å°Žå…¥ã—ã¦ã¿ã¾ã—ãŸã€‚

ã“ã®ãƒ–ログ㯠WordPress ã§ã‚„ã£ã¦ã„ã¾ã™ã€‚
ã¯ã¦ãªã‚¹ã‚¿ãƒ¼ã¯ã˜ã‚ã¦ã‚¬ã‚¤ãƒ‰ – Hatena Starã«å¯¾å¿œãƒ–ログサービスã«å…¥ã£ã¦ã„ãŸã®ã§æ—©é€Ÿ JavaScritp コードを header.php ã® ã®å‰ã«å…¥ã‚Œã¦ã¿ã¾ã—ãŸã€‚
ã¨ã“ã‚ãŒã€ã‚µã‚¤ãƒ‰ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã®ã€ŒCategoryã€ãªã©ã®æ¨ªã«è¡¨ç¤ºã•れã¦ã—ã¾ã„ã¾ã—ãŸã€‚
ã©ã†ã‚‚ h3ã‚¿ã‚°ã®ä¸­ã®aã‚¿ã‚°ã«â˜†ãƒœã‚¿ãƒ³ã‚’入れã¦ã„るよã†ã§ã™ã€‚

å†åº¦ã€ã¯ã¦ãªã‚¹ã‚¿ãƒ¼ã¯ã˜ã‚ã¦ã‚¬ã‚¤ãƒ‰ を見るã¨

技術的ãªè©³ç´°ã«ã¤ã„ã¦ã¯ã€HatenaStar.js下部ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆè‹±èªžï¼‰ã‚’ã”覧ãã ã•ã„。

ã¨ã‚りã¾ã™ã€‚早速ソースを見ã¦ã¿ã‚‹ã¨æœ€å¾Œã®æ–¹ã«è‰²ã€…ã¨ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆãŒæ›¸ã‹ã‚Œã¦ã„ã¾ã™ã€‚

// This is the optional script for WordPress blogs
<script src=”http://s.hatena.com/js/Hatena/Star/EntryLoader/WordPress.js” type=”text/javascript”></script>

ã¨ã‚りã¾ã—ãŸã€‚

ã§ã€

<script src="http://s.hatena.ne.jp/js/HatenaStar.js" type="text/javascript"></script>
<script src="http://s.hatena.com/js/Hatena/Star/EntryLoader/WordPress.js" type="text/javascript"></script>

ã¨æ›¸ãã“ã¨ã«ã‚ˆã‚Šã€ã†ã¾ã行ãã¾ã—ãŸ^^

ã•らã«ã‚³ãƒ¡ãƒ³ãƒˆã‚’ã¤ã‘られるよã†ã«ã€è‡ªåˆ†ã®ãƒ–ログを登録ã—ã¾ã™ã€‚登録ã™ã‚‹ã¨æ–°ãŸã«ã‚³ãƒ¡ãƒ³ãƒˆã‚’付ã‘られる JavaScript ãŒç™ºè¡Œã•れるã®ã§ã€ãれを追加ã™ã‚‹ã¨ã€‚。。ã¾ãŸã€h3ã‚¿ã‚°ã®å¾Œã‚ã«â˜†ãƒœã‚¿ãƒ³ãŒã€‚。。

よãã¿ã‚‹ã¨ãƒ–ログ登録後ã«ç™ºè¡Œã•れ㟠JavaScritp ã®1行目㯠HatenaStar.js を読ã¿è¾¼ã‚€ã‚‚ã®ã§ã€ä¸€ç•ªæœ€åˆã«è²¼ã‚Šä»˜ã‘ãŸã‚³ãƒ¼ãƒ‰ã¨åŒã˜ã§ã—㟠orz
ã§ã€çµå±€ãƒ–ログ登録後ã«ç™ºè¡Œã•れ㟠JavaScript 㨠WordPress.js を読ã¿è¾¼ã‚€ JavaScript を貼り付ã‘ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã†ã¾ã行ãã¾ã—ãŸã€‚

ブログ登録後ã«è¡¨ç¤ºã•れるコードã¯ãƒˆãƒ¼ã‚¯ãƒ³ãŒè¿½åŠ ã•れãŸã¨ã„ã†ã“ã¨ã§ã™ã­ã€‚

CakePHP アソシエーションã®ã¾ã¨ã‚(2)

CakePHP No Comments »

アソシエーションã®ã¾ã¨ã‚(1) ã§æ›¸ã„ãŸ

< ?php
class User extends AppModel
{
    var $name = 'User';
    var $hasOne = array('Profile' =>
                    array('className' => 'Profile',
                          'conditions' => '',
                          'order' => '',
                          'dependent' => true,
                          'foreignKey' => 'user_id'
                    )
                  );
}
?>

ã“ã®éƒ¨åˆ†ã®è£œè¶³ã§ã™ã€‚
ãれãžã‚Œã®æ„味ã™ã‚‹ã¨ã“ã‚ã¯

var $hasOne = array('関連先ã®ãƒ¢ãƒ‡ãƒ«å'=>
                array('className'  => '関連先ã®ãƒ¢ãƒ‡ãƒ«ã®ã‚¯ãƒ©ã‚¹å',
                      'conditions' => '関連を定義ã™ã‚‹SQLæ¡ä»¶ã®ä¸€éƒ¨',
                      'order'      => '関連先ã®ãƒ‡ãƒ¼ã‚¿ã®ä¸¦ã³é †',
                      'dependent'  => '関連先データã®åŒæ™‚削除',
                      'foreignKey' => '関連先テーブルå´ã®å¤–部キー'
                )
              );

conditions ã¯æ¡ä»¶ã‚’付ã‘ã¦é–¢é€£ä»˜ã‘るモデルã®ãƒ‡ãƒ¼ã‚¿ã‚’制é™ã™ã‚‹ã¨ãã«æŒ‡å®šã™ã‚‹ã€‚
dependent ã¯é–¢é€£å…ƒã®ãƒ‡ãƒ¼ã‚¿ãŒå‰Šé™¤ã•れãŸã¨ãã«ã€ä¸€ç·’ã«é–¢é€£å…ˆã®ãƒ‡ãƒ¼ã‚¿ã‚‚削除ã™ã‚‹ã‹ã©ã†ã‹ã€‚
関連先ã®ãƒ¢ãƒ‡ãƒ«ã§é–¢é€£å…ƒã®ãƒ¢ãƒ‡ãƒ«ã®ä¸»ã‚­ãƒ¼ã‚’定義ã—ã¦ã„るカラムåã§ã™ã€‚

dependent ãªã©ã¯ã‹ãªã‚Šä¾¿åˆ©ã«ä½¿ãˆãã†ã§ã™ã­ã€‚
アソシエーションã®ã¾ã¨ã‚(1) ã«æ›¸ã„ãŸã‚ˆã†ã«ã€ foreignKey 㯠CakePHP ã®å‘½åè¦å‰‡ã«å¾“ã£ã¦ã„れã°çœç•¥å¯èƒ½ã§ã™ã€‚

CakePHP アソシエーションã®ã¾ã¨ã‚(1)

CakePHP 1 Comment »

CakePHP ã®ã‚¢ã‚½ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã®ã¾ã¨ã‚ã§ã™ã€‚
タイトル㫠(1) ã¨ã¤ã‘ãŸã®ã§å¤šåˆ†ä½•回ã‹ç¶šã‘ã¾ã™ã€‚

アソシエーションã¨ã¯ãƒ¢ãƒ‡ãƒ«é–“ã®ã¤ãªãŒã‚Šã®ã“ã¨ã§ã™ã€‚

例ãˆã°ã€ä¸‹è¨˜ã®ã‚ˆã†ãª2ã¤ã®ãƒ†ãƒ¼ãƒ–ルãŒã‚ã‚‹ã¨

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

CREATE TABLE profiles(
    id int unsigned auto_increment primary key,
    user_id int unsigned unique,
    blog_url varchar(256),
    hobby varchar(256),
    created datetime default NULL,
    modified datetime default NULL
);

CakePHP ã§ã¯2ã¤ã®ãƒ¢ãƒ‡ãƒ«ã«ãªã‚Šã¾ã™ã€‚
User モデル㨠Profile モデルã§ã™ã€‚
ã“ã®2ã¤ã®ãƒ¢ãƒ‡ãƒ«ã¯1対1ã®é–¢ä¿‚ã«ãªã‚Šã¾ã™ã€‚
「一人ã®ãƒ¦ãƒ¼ã‚¶ã¯1ã¤ã®ãƒ—ロファイルをæŒã¤ã€ã¨ã†ã„ã“ã¨ã§ã™ã€‚

ã“ã®2ã¤ã®ãƒ¢ãƒ‡ãƒ«ã®é–¢ä¿‚ã‚’ CakePHP ã«æŒ‡ç¤ºã™ã‚‹ã«ã¯æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚

< ?php
class User extends AppModel
{
    var $name = 'User';
    var $hasOne = array('Profile' =>
                    array('className' => 'Profile',
                          'conditions' => '',
                          'order' => '',
                          'dependent' => true,
                          'foreignKey' => 'user_id'
                    )
                  );
}
?>

ã“れã§ã€
$this->User->findById($id);ã¨ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€

Array
(
    [User] => Array
        (
            [id] => 1
            [nickname] => boze
        )
    [Profile] => Array
        (
            [id] => 1
            [blog_url] => http://www.syuhari.jp/blog
            [hobby] => 読書
        )
);

ã®ã‚ˆã†ã«User モデルã ã‘ã§ãªãã€Profileãƒ¢ãƒ‡ãƒ«ã®æƒ…å ±ã‚‚åŒæ™‚ã«å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

CakePHP ã®å‘½åè¦å‰‡ã‚’守ã£ã¦ã„れã°ã€
var $hasOne = array('Profile');ã ã‘ã§ã‚‚ã„ã‘るよã†ã§ã™ã€‚
※外部キーã¯ãƒ¢ãƒ‡ãƒ«å+_id

CakePHP 日本語マニュアル
6.4. アソシエーション

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン