ビューとコントローラーの関係にこの問題があります。これはコントローラーです:
<?php
class AnswersController extends AppController {
public $helpers = array('Html', 'Form', 'Session');
public $components = array('Session');
public function add() {
$customer_id = $this->params['url']['customer_id'];
$question_set_id = $this->params['url']['question_set_id'];
$order_value = $this->params['url']['order_value'];
$possible_answer_model = ClassRegistry::init('PossibleAnswer');
$question_model = ClassRegistry::init('Question');
$order_model = ClassRegistry::init('Order');
$order = $order_model -> find('first', array(
'Order.question_set_id' => $question_set_id,
'Order.value' => $order_value));
$question = $question_model -> find('first', array(
'Question.id' => $order['Order']['question_id']));
$this -> set('question', $question);
if ($question['Question']['kind'] != "o") {
$this -> set('possible_answers', $possible_answer_model -> find('all', array(
'PossibleAnswer.question_id' => $question['Question']['id'])));
}
$this->Session->setFlash($question['Question']['content']);
}
}
適切な質問とpossible_answers(クエリ出力を見ることができます)を取得していますが、ビューには常に同じ質問(アクションに渡すquestion_set_idとorder_valueに関係なく)とすべてのpossible_answers(実際にあるものだけでなく)が表示されます質問に関連して、常にそれ自体を示すこの質問でさえ)。クエリの出力は正しいので、ビューにデータを渡す際に問題が発生する必要があると思います。とにかく、ビューは次のようになります。
<!-- File: /app/View/Answers/add.ctp -->
<?php
if ($question['Question']['kind'] == 'o') {
echo $this->Form->create('PossibleAnswer');
echo $this->Form->input('content', array(
'rows' => '3', 'label' => 'Miejsce na twoją odpowiedź:'));
echo $this->Form->input('PossibleAnswer', array(
'question_id' => $question['Question']['id']));
echo $this->Form->end('Dalej');
}
else {
echo $this->Form->create('Answer');
foreach ($possible_answers as $possible_answer) {
echo '<input name="'
.'possible_answers'
.'" id="'
.$possible_answer['PossibleAnswer']['id']
.'" value="'
.$possible_answer['PossibleAnswer']['id']
.'" type="radio">';
echo '<label for="'
.$possible_answer['PossibleAnswer']['id']
.'">'
.$possible_answer['PossibleAnswer']['content']
.'</label><br />';
}
echo $this->Form->end('Dalej');
}
?>
クエリ出力は次のようになります。
1SELECT
Order
。id
、Order
。question_id
、Order
。question_set_id
、Order
。value
、Question
。id
、Question
。content
、Question
。company_id
、Question
。kind
、QuestionSet
。id
、QuestionSet
。name
、QuestionSet
。company_id
FROMmentor11
。orders
左のOrder
参加者としてmentor11
。questions
ASQuestion
ON(Order
。question_id
=Question
。id
)LEFTJOINmentor11
。question_sets
ASQuestionSet
ON(Order
。question_set_id
=QuestionSet
。id
)WHERE 1 = 1 LIMIT 1(影響を受ける1、行数1、25を取りました)
2SELECT
Question
。id
、Question
。content
、Question
。company_id
、Question
。kind
、Company
。id
、Company
。trader_id
、Company
。name
FROMmentor11
。questions
左のQuestion
参加者としてmentor11
。companies
ASCompany
ON(Question
。company_id
=Company
。id
)WHERE 1 = 1 LIMIT 1(影響を受ける1、行数1、49を取りました)
3SELECT
Order
。id
、Order
。question_id
、Order
。question_set_id
、Order
。value
FROMmentor11
。orders
ASWHERE 。Order
_ =(1)Order
question_id
(影響を受ける1、行数1、28を取りました)
4SELECT
PossibleAnswer
。id
、PossibleAnswer
。content
、PossibleAnswer
。question_id
FROMmentor11
。possible_answers
ASWHERE 。PossibleAnswer
_ =(1)PossibleAnswer
question_id
(影響を受けた2、数行2、35を取った)
5SELECT
PossibleAnswer
。id
、PossibleAnswer
。content
、PossibleAnswer
。question_id
FROMmentor11
。possible_answers
ASPossibleAnswer
WHERE 1 = 1(影響を受ける5、行数5、23を取りました)
ご覧のとおり、4番目のクエリは2つの可能な回答を返しますが、ビューには5つが含まれています(現時点ではすべてです)。
最初は、5番目のクエリ(すべてのpossible_answersを返す)が4番目のクエリを何らかの形で「削除」しているのではないかと思いました。この5番目のクエリがどのように呼び出されたかはまだわかりません(必要ありません。そのようなクエリを呼び出すコードは表示されません)が、「my」$possible_answersを$possible_answerzに変更して作成しました。異なる-それは機能しませんでしたが、機能したとしても:$questionが常に同じである理由を説明しません...
任意のヒント?
編集:私が値をフラッシュするとき-それらは正しいです...