2011-07-16 15 views
0

からデータを引き出し:「クライアント」と「予定」CakePHPは、私は私のアプリでは2つのテーブルを持っている二つのテーブル

の予定表では、私が一緒にテーブルをリンク「のClientID」と呼ばれる外部キーを持っています。そのユーザーの予定をどのように表示しますか?

たとえば、クライアントを見るとき/admin/clients/view/201/私はクライアント201のクライアントの詳細とそのクライアントの予定を見るでしょう。

は、これまでのところ、私のコントローラは次のようになります。

class ClientsController extends AppController 
{ 
    var $name = 'Clients'; 

    function beforeFilter() 
    { 
     parent::beforeFilter(); 
     $this->Auth->allow(array('*')); 
    } 

    function admin_view($id = null) 
     { 
      $this->Client->id = $id; 
      $this->set('client', $this->Client->read()); 
     } 

任意の助けいただければ幸いです。おかげ

は編集:クライアントモデル

class Client extends AppModel 
{ 
    var $name = 'Client'; 

    var $useTable = 'clients'; 
} 

EDIT2:ビュー

<h1><?php echo $client['Client']['lastname']; ?> <?php echo $client['Client']['firstname']; ?> (<?php echo $this->Html->link('Edit', array('action' => 'edit', $client['Client']['id'])); ?>)</h1> 

    <p><strong>Date of Birth:</strong> <?php echo $client['Client']['dateofbirth']; ?></p> 

    <h3>Appointments</h3> 

<table> 
    <?php foreach ($appointments as $appointment): ?> 
     <tr> 
      <td> 
       <?php echo $this->Html->link($appointment['Appointment']['date'], 
       array('admin' => true, 'controller' => 'appointment', 'action' => 'view', $appointment['Appointment']['id'])); ?> 
      </td> 
     </tr> 
    <?php endforeach; ?> 
</table> 

答えて

0

実際にはUser - >Commentの関連があります)、そして逆belongsToの間での関連付けAppointment - >Client(同じ文書を参照)。あなたのDBのテーブルとキーはCake conventionsに従って命名され、あなたがPHP 5を使用している場合

、これはあなたが必要とするすべてである:

class Client extends AppModel 
{ 
    var $hasMany = 'Appointment'; 
} 

class Appointment extends AppModel 
{ 
    var $belongsTo = 'Client'; 
} 

再帰はデフォルトでは(あなたがそれを必要と)1に設定されていますだからどこにも変更していなければ、あなたのコードはうまくいくはずです。

+0

これはどのモデルですか? – Cameron

+0

'Client'は' Client'モデルに入り、 'Appointment'は' Appointment'モデルに入ります。 – lxa

+0

それでは、私が見ているクライアントの予定をどうやって表示するのですか? 'admin_view'メソッドのコントローラーには何を入れますか?おかげで – Cameron

0

は、あなたのモデルで両方のモデルは、関連付けが設定されたVARていることを確認してください。つまり、クライアントモデルでは、外部キーclient_idで設定されたhasMany関連があり、Appointmentモデルでは外部キーclient_idでbelongsToが存在します。これが問題ないかどうかを確認するには、コントローラー内で再帰的にfindを-1より大きい値に設定して呼び出しているかどうかを確認します。あなたはadmin_viewアクション使用

、例えば、

var $hasMany = array(
    'Appointment' => array(
     'className' => 'Appointment', 
     'foreignKey' => 'client_id', 
     'dependent' => false, 
     'conditions' => '' 
    ) 

そして、あなたは、すべての関連データをプルする必要があり、コントローラのアクションでは、次のように$のhasManyのフィールドを持っている必要があり、あなたのクライアントで今

$this->Client->find('all', 'recursive' => 1); 

モデル>Appointmentモデル(docsを参照してください、元 - あなたはセットアップにClienthasManyの関連付けを必要とする

$this->set('client', $this->Client->find('first', 'recursive' => 1)); 
+0

こんにちは。それはちょうど私の頭を上った。これがコードの観点からどのように見えるかの例を示してください。私は上記のモデルを掲載します。 – Cameron

0

代わりに、外部キー 'client_id'に名前を付ける必要があります。そうすることで、あなたがそれを焼くとき、Cakeは自動的に接続を行うことができます。 また、あなたの現在の目的のために、再帰的な= 1は良いでしょう。しかし、私はContainableを調べることをお勧めします。これは非常に便利なツールです。

関連する問題