Question

I have two CakePHP models, Tests and Questions, where a Test has many questions, and a Question only has one test.

Neither this code:

echo $form->create("Question", array('action' => 'add'));
echo $form->input("text");
echo $form->input("Test.id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
echo $form->end("Add");

Nor:

echo $form->create("Question", array('action' => 'add'));
echo $form->input("text");
echo $form->input("Question.Test.id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
echo $form->end("Add");

associates the new question with a test (but does create it in the database).

$test['Test']['id'] does produce a correct output of ID.

Assistance appreciated.

Was it helpful?

Solution

You should associate (if you haven't done it yet) the two models with hasOne and hasMany associations and doing so creating in the table questions a column called test_id (that's named foreignKey).

The form of the question then becomes:

echo $form->create("Question", array('action' => 'add'));
echo $form->input("text");
echo $form->input("Question.test_id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
echo $form->end("Add");

OTHER TIPS

Your naming is off. You should call your hidden field Question.test_id instead, since that is the field where the value should be saved. For example:

$this->Form->input('Question.test_id', array('type' => 'hidden', 'value' => $test['Test']['id']));

I know that this question is old, but for those who came here like me looking for CakePHP 3 answers, the association naming convention for inputs has changed, with table.field for BelongsTo/HasOne associations and tables.field for HasMany/BelongsToMany associations.

Read the docs for more info.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top