ビューとコントローラーの関係にこの問題があります。これはコントローラーです:
<?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_idFROMmentor11。orders左のOrder参加者としてmentor11。questionsASQuestionON(Order。question_id=Question。id)LEFTJOINmentor11。question_setsASQuestionSetON(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。nameFROMmentor11。questions左のQuestion参加者としてmentor11。companiesASCompanyON(Question。company_id=Company。id)WHERE 1 = 1 LIMIT 1(影響を受ける1、行数1、49を取りました)
3SELECT
Order。id、Order。question_id、Order。question_set_id、Order。valueFROMmentor11。ordersASWHERE 。Order_ =(1)Orderquestion_id(影響を受ける1、行数1、28を取りました)
4SELECT
PossibleAnswer。id、PossibleAnswer。content、PossibleAnswer。question_idFROMmentor11。possible_answersASWHERE 。PossibleAnswer_ =(1)PossibleAnswerquestion_id(影響を受けた2、数行2、35を取った)
5SELECT
PossibleAnswer。id、PossibleAnswer。content、PossibleAnswer。question_idFROMmentor11。possible_answersASPossibleAnswerWHERE 1 = 1(影響を受ける5、行数5、23を取りました)
ご覧のとおり、4番目のクエリは2つの可能な回答を返しますが、ビューには5つが含まれています(現時点ではすべてです)。

最初は、5番目のクエリ(すべてのpossible_answersを返す)が4番目のクエリを何らかの形で「削除」しているのではないかと思いました。この5番目のクエリがどのように呼び出されたかはまだわかりません(必要ありません。そのようなクエリを呼び出すコードは表示されません)が、「my」$possible_answersを$possible_answerzに変更して作成しました。異なる-それは機能しませんでしたが、機能したとしても:$questionが常に同じである理由を説明しません...
任意のヒント?
編集:私が値をフラッシュするとき-それらは正しいです...