私は次の設定をしています:
モデル: ユーザー
モデル: クライアント
ユーザー hasAndBelongsToMany クライアント
クライアント hasAndBelongsToMany ユーザー
DB テーブル:
ユーザー
- ID
- たくさんの畑
クライアント
- ID
- たくさんの畑
クライアント_ユーザー
- ID
- クライアントID
- ユーザーID
- 状態
すべてがうまく機能していますが、クライアント モデルでステータス フィールド (HABTM テーブルに関連付けられている) を取得するためのより良い方法があるかどうか疑問に思っています。
これが私がやっていることです:
ClientsController.php
public function view($id = null) {
$this->Client->id = $id;
if (!$this->Client->exists()) {
throw new NotFoundException(__('Invalid client'));
}
$this->Client->contain('User.id');
$this->Client = $this->Client->read(null, $id);
$this->set('client', $this->Client);
}
$this->Client の var_dump は次のようになります。
array
'Client' =>
array
'id' => string '1' (length=1)
'first_name' => string 'Matt' (length=4)
'last_name' => string 'Moses' (length=4)
'address_1' => string '123 S Happy Lane' (length=16)
'address_2' => string '' (length=0)
'city' => string 'Yourtown' (length=5)
'state' => string 'TX' (length=2)
'zip' => string '12345' (length=5)
'phone_home' => string '8014567899' (length=10)
'phone_work' => string '8014567899' (length=10)
'phone_cell' => string '8014567899' (length=10)
'email' => string 'matt@matt.com' (length=13)
'created' => string '2012-06-13 04:41:19' (length=19)
'modified' => string '2012-06-13 04:41:19' (length=19)
'User' =>
array
0 =>
array
'id' => string '1' (length=1)
'ClientsUser' =>
array
...
クライアント/view.ctp
...
<?php echo $client['User'][0]['ClientsUser']['status']; ?>
...
私には、この最後の行は「よりクリーンな方法があります」と叫びますが、問題について何も見つけられないようです。何かご意見は?