CakePHP1.3のHABTMでの質問です。

shainsというテーブルにid,shain_id,shainname、busyosというテーブルにid,busyo_id,busyoname、中間ファイルshains_busyosというテーブルにid,shain_id,busyo_idというHABTM連携の3つを作りました。
実はこの連携でうまくいかないのです。
shainsのshain_idは数字のみ(varchar(5))、busyosのbusyo_idはアルファベット始まりの5文字(varchar(5))例A0001,A0004です。
連携のための制約などがあるのでしょうか?
ご経験のある方ご返事お待ちしております。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/03/14 15:50:10
  • 終了:2012/03/21 15:55:06

回答(0件)

回答はまだありません

  • id:tdoi
    うまくいかないというのは、何を意味してますか?
    ありそうなのは、Modelのアソシエーションの記述のキーの指定がよくないとかかなとは思います。
    Shainモデルのアソシエーションの記述とかを出してもらうと、話が早いかと思います。
  • id:momotaro2
    すみません。うまくいかないというのはfind('all')でデータを受け取ったときに連携するデータがすべてきれいにもらえてないということです。

    設定は以下のとおりです。
    Table:shains / Model:Shain
    class Shain extends AppModel {
    public $hasAndBelongsToMany = array('Busyo');}
    Data:
    id 1, shain_id 1, name 太郎
    id 2, shain_id 2, name 二郎

    Table:busyos / Model:Busyo
    class Busyo extends AppModel {
    public $hasAndBelongsToMany = array('Shain');}
    Data:
    id 1, busyo_id 00001, busyomei 総務
    id 2, busyo_id 00002, busyomei システム
    id 3, busyo_id A0001, busyomei 営業1
    id 4, busyo_id B0001, busyomei 福岡営業所

    Table:shains_busyos / Model:ShainsBusyo
    class AdesBdes extends AppModel {
    public $belongsTo = array('Shain', 'Busyo');}
    Data:
    id 1, shain_id 1, busyo_id 00001
    id 2, shain_id 2, busyo_id A0001
    id 3, shain_id 10, busyo_id A0001
    id 4, shain_id 2, busyo_id 00002 ※兼務
     *社員対部署が、多対多となります。

    shains_controller.php
    class ShainsController extends AppController {
    function index () {
    $data = $this->Shain->find("all");
    debug($data);
    exit;}}

    のような内容です。
    find('all')では、どうもbusyo_idが数字ではないものは連携していないようです。

    なにもかもが初めてですので、何卒よろしくお願いいたします。
  • id:momotaro2
    すみません。間違えているものがありました。
    以下のような訂正させていただきます。

    Table:shains_busyos / Model:ShainsBusyo
    class AdesBdes extends AppModel {
    public $belongsTo = array('Shain', 'Busyo');}



    Table:shains_busyos / Model:ShainsBusyo
    class ShainsBusyo extends AppModel {
    public $belongsTo = array('Shain', 'Busyo');}
  • id:tdoi
    Shainモデルの定義で、
    var $primaryKey = 'shain_id';

    Busyoモデルの定義で、
    var $primaryKey = 'busyo_id';

    とか書くとうまくいく気がします。
    これですべてがうまくいくかまでは保証できませんが。

    参考:http://labo.tsuchinokopro.com/2010/02/287/
  • id:momotaro2
    ありがとうございました。
    primarykeyの定義でうまくいきました。

    参考サイトのご案内もありがとうございます。

    しっかり勉強いたします。


この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません