I've started playing with new cakephp ORM functionality and i stuck with
complex relation updates/saves.
Example relations look like this:
Customer hasMany CustomerDetails
CustomerDetails hasMany Attributes
Attributes hasMany AttributeValues
CustomerController:: view() action pases $customer entity variable
(contains all relations) to view.
Variable is then used in view to echo entity data but also is passed to
Form->create($customer) to edit part of the data
I build my forms using notation below:
$this->Form->hidden("id");
$this->Form->text("customer_details.0.attributes.0.attribute_values.0.name")
After user sends data i want to populate all $customer entity variable with
$this->request->data then try to save it and finally pass to view again
(this way all related entities should have validation errors included):
public function view($customer_id){
$this->Customers = TableRegistry::get ( 'Customers' );
/* @var $customer Customer */
$customer=$this->Customers->find()->where(['Customers.id'=>$customer_id])->contain(["CustomerDetails"=>["Attributes"=>["AttributeValues"]]])->first();
if($this->request->is("post")){
*$customer->populate($this->request->data,['associated'=>['CustomerDetails'=>
['associated' => ['Attributes'=> ['associated' =>
['AttributesValues']]); //hydrate??*
if($this->Customers->save($customer,['associated'=>['CustomerDetails'=>
['associated' => ['Attributes'=> ['associated' =>
['AttributesValues']])){
//Yay
}
}
$this->set(compact('customer'));
}
$this->request->data looks like this after send:
'id' => '1',
'customer_details' => array(
(int) 0 => array(
'id' => '1',
'attributes' => array(
(int) 0 => array(
'id' => '1',
'attributes_values' => array(
(int) 0 => array(
'string_value' => 'test
test test'
)
)
),
(int) 1 => array(
'name' => 'love',
'attributes_values' => array(
(int) 0 => array(
'string_value' => 'me'
)
)
)
)
)
),
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to cake-php+unsubscr...@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.