テーブルの連携(アソシエーション)がうまくいきません。
yuuta > テーブルの連携(アソシエーション)がうまくいきません。 @ 2013/10/15 16:25 |
---|
2つのテーブルを連携(アソシエーション)させようとしているのですが、「$belongsTo」でテーブルの連携がうまくいきません。
下記の通り 2つのテーブルを作成し、それぞれ「sec_code」の項目をキーとして 2つのテーブルを連携させようとしています。(IDで連携をさせようとしているわけではありません。) ですが、Model、Controllerは下記の通り記述しているのですが、posts、detailsのいずれのテーブルでも「belongsTo」で連携させた方のレコードが取得できません。 baserCMSを入れていない CakePHPのみの環境であれば、belongsTo、hasOneのいずれでもレコードは取得できておりますので、記述方法そのものが間違っているわけではないんじゃないかと思ってはいますが、baserCMSでは何か特殊な記述方法が必要なのでしょうか? ちなみに、下記のサイトを参考にさせていただき、プラグインという形で実装しています。 http://blog.komomo.biz/log/archives/3 -----------------テーブル「bc_pg_bcforum_posts」 CREATE TABLE IF NOT EXISTS `bc_pg_bcforum_posts` ( `id` int(8) NOT NULL AUTO_INCREMENT, `sec_code` char(4) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ----------------- -----------------テーブル「bc_pg_bcforum_details」 CREATE TABLE IF NOT EXISTS `bc_pg_bcforum_details` ( `id` int(8) NOT NULL AUTO_INCREMENT, `post_id` int(8) NOT NULL, `sec_code` char(4) DEFAULT NULL, `list` varchar(255) DEFAULT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ----------------- -----------------/app/plugins/bcforum/models/bcforum_post.php class BcforumPost extends AppModel { var $name = 'BcforumPost'; var $plugin = 'Bcforum'; var $useDbConfig = 'plugin'; var $primaryKey = 'sec_code'; var $belongsTo = array( "Post2" => array( "className" => "PgBcforumDetail", "foreignKey" => "sec_code", "conditions" => "", "fields" => "", "order" => "" ), ); var $hasOne = array( "Post3" => array( "className" => "PgBcforumDetail", "foreignKey" => "sec_code", "conditions" => "", "fields" => "", "order" => "" ), ); } ?> ----------------- -----------------/app/plugins/bcforum/models/bcforum_detail.php class BcforumDetail extends AppModel { var $name = 'BcforumDetail'; var $plugin = 'Bcforum'; var $useDbConfig = 'plugin'; var $primaryKey = 'sec_code'; var $belongsTo = array( "Detail2" => array( "className" => "PgBcforumPost", "foreignKey" => "sec_code", "conditions" => "", "fields" => "", "order" => "" ), ); var $hasOne = array( "Detail3" => array( "className" => "PgBcforumPost", "foreignKey" => "sec_code", "conditions" => "", "fields" => "", "order" => "" ), ); } ?> ----------------- -----------------/app/plugins/bcforum/controllers/bcforum_details_controller.php // 継承するコントローラのpluginsをインポートする app::import('Controller', 'Plugins'); // baserCMS にパッケージされている PluginsController を継承させます class BcforumDetailsController extends PluginsController { var $name = "BcforumDetails"; var $uses = array('Plugin', 'Bcforum.BcforumDetail'); var $components = array('BcAuth','Cookie','BcAuthConfigure'); function index() { $this->pageTitle = 'トピックス一覧・New'; $datas = $this->BcforumDetail->find('all'); $this->set('datas', $datas); } } ?> ----------------- ------------------------------------------------------- ■ BaserCMSのバージョン:2.1.1 ■ サーバー名:ローカルサーバ・XAMPP ■ スマートURLの利用:ON ■ 設置フォルダ:サブディレクトリ ■ 利用しているデータベース:MySQL ■ PHPスキル(自己評価):C ------------------------------------------------------- ■ OS:Windows7 ■ XAMPP:3.1.0 ■ PHP:5.4.7 ■ MySQL:5.5.27 ------------------------------------------------------- |