最終的に、containable 動作を使用して必要なものを構築することに成功しましたが、解決できない問題が発生しました。提案 ID を取得し、それに関連付けられているクライアント、製品、仕様、および付録を表示したいと考えています。
そのために、ProposalsController.php でビュー アクションを次のように作成しました。
function admin_view($id){
$this->loadModel('Client');
// $d = $this->Proposal->find('all', array(
$d['proposals'] = $this->Proposal->find('all', array(
'conditions' => array('Proposal.id' => $id),
//'contain' => array() Tableau vide pour supprimer les liaisons
'contain' => array('Client' => array(
'fields' => array('id','name'),
'Product' => array(
'Specification', 'fields'=>array('id','name'),
'Appendice', 'fields'=>array('id','name')
)
))
));
$this->set($d);
// debug($d);
}
私は自分の状態でそのIDを介して特定の提案を取得しています。次に、ma クエリを admin_view.ctp に送信します。
<h1>VIEW</h1>
<?php
// debug($proposals);
?>
<p>
Proposition : <strong><?php echo $proposals[0]['Proposal']['name']; ?></strong>
pour le client <strong><?php echo $proposals[0]['Client']['name']; ?></strong>
ayant le produit <strong><?php echo $proposals[0]['Client']['Product'][0]['name']; ?></strong>
avec la spec <strong><?php echo $proposals[0]['Client']['Product'][0]['Specification'][0]['name']; ?></strong>
et l'annexe <strong><?php echo $proposals[0]['Client']['Product'][0]['Appendice'][0]['name']; ?></strong>
</p>
それは機能しますが、特に[0]を使用しなければならない方法はかなり混乱しているようです。また、プロポーザルに製品も仕様書も付録も含まれていない場合、それらはもちろん存在しないため、エラーになります。
コードを再配置してビューを単純化し、より意味のあるものにするにはどうすればよいですか?
また、以下はコントローラーのビューアクションからコメントを外した debug($d) です:
array(
(int) 0 => array(
'Proposal' => array(
'id' => '1',
'name' => 'Proposal 1',
'created' => '2013-02-15 00:00:00',
'modified' => '2013-02-16 03:00:47',
'due' => '2013-02-28 00:00:00',
'content' => 'Terms and conditions of the proposal 1.'
),
'Client' => array(
'id' => '1',
'name' => 'Client 1',
'Product' => array(
(int) 0 => array(
'id' => '7',
'name' => 'produit 1',
'client_id' => '1',
'Specification' => array(
(int) 0 => array(
'id' => '8',
'name' => 'spec 1 produit 1',
'value' => 'value 1 produit 1',
'product_id' => '7'
),
(int) 1 => array(
'id' => '9',
'name' => 'spec 2 produit 1',
'value' => 'value 2 produit 1',
'product_id' => '7'
)
),
'Appendice' => array(
(int) 0 => array(
'id' => '12',
'name' => 'Annexe 1 produit 1',
'content' => 'content annexe 1 produit 1',
'product_id' => '7'
)
)
),
(int) 1 => array(
'id' => '8',
'name' => 'produit 2',
'client_id' => '1',
'Specification' => array(
(int) 0 => array(
'id' => '10',
'name' => 'spec 1 produit 2',
'value' => 'value 1 produit 2',
'product_id' => '8'
),
(int) 1 => array(
'id' => '11',
'name' => 'spec 2 produit 2',
'value' => 'value 2 produit 2',
'product_id' => '8'
),
(int) 2 => array(
'id' => '12',
'name' => 'spec 3 produit 2',
'value' => 'value 3 produit 2',
'product_id' => '8'
)
),
'Appendice' => array(
(int) 0 => array(
'id' => '13',
'name' => 'Annexe 1 produit 2',
'content' => 'content annexe 1 produit 2',
'product_id' => '8'
)
)
)
)
)
),
(int) 1 => array(
'Proposal' => array(
'id' => '1',
'name' => 'Proposal 1',
'created' => '2013-02-15 00:00:00',
'modified' => '2013-02-16 03:00:47',
'due' => '2013-02-28 00:00:00',
'content' => 'Terms and conditions of the proposal 1.'
),
'Client' => array(
'id' => '2',
'name' => 'Client 2',
'Product' => array()
)
)
)
ID 1 の提案を意味する必要なものを取得しますが、その下には、最初の配列 (int) 0 に既にあるため、必要のない 2 つのモデルの提案とクライアントの関連付けを表示する別の配列があります。
私は何を間違っていますか?
助けてくれてどうもありがとう!