1

I have a record header with a model of RecordHeader
RecordHeader (id PRIMARY KEY, entryDate DATETIME, fullName TEXT)

I have record details with a model of RecordDetails
RecordDetails (id PRIMARY KEY, headerID FOREIGN KEY, answer TEXT)

My RecordHeader has a relationship defined:

public $hasMany = array('RecordDetails' => array(
    'from' => 'RecordHeaders',
    'to' => 'RecordDetails',
    'key' => array('id' => 'headerID'),
    'fieldName' => 'details'
));

I save a view with an "id" hidden field, a "headerID" hidden field, a "fullName" text field with some arbitrary name ("xyz789"), and an "answer" text field, which I put in some arbitrary data("abc123").

My controller strips out the id and headerID if its empty, which it will be at the start of a new series of questions and fills in the entryDate

$record = RecordHeaders::create($this->request->data);
$record->save();

I have data in RecordHeaders but nothing in RecordDetails.
RecordHeader(1, "2012-03-30 12:40", "xyz789")
RecordDetails table is empty

The request does contain the "answer" of "abc123" when I inspect it on RecordHeaders::create()

Am I doing something wrong, or can I only save the RecordDetails if the RecordHeader is already in the database, and I call the save on a RecordDetails object?

ton.yeung
  • 4,793
  • 6
  • 41
  • 72
  • Please show your the submitted data array. – Mehdi Lahmam B. Mar 30 '12 at 01:38
  • @MehdiLahmamB. I'm not sure what you mean by the submitted data array, do you mean the data array in the request? I put in the view fields if that's what you meant. – ton.yeung Mar 30 '12 at 05:42
  • 1
    I think your last question is the case. As far as I can tell from taking a look at Model::create (and Model::save) Lithium doesn't handle automatically saving nested models for you. You would need to save the header first, then the details. Of course you'd then be able to select them together using 'with'. – clexmond Apr 07 '12 at 14:56

0 Answers0