Cakephp Associated table save -
trying save info 2 models in associated table , info thats calculated column values in 1 model.
subscription model:
class subscription extends appmodel { public $hasandbelongstomany = array('user'); } user model:
class user extends appmodel { public $hasandbelongstomany = array('subscription','role'); } joined table subscriptions_users.
this how im saving post in user controller -> register method
if($this->user->save($this->request->data)) { // add together row subscriptions_users $this->subscription->user->create(); // format request info associated table subscriptions_users $data = $this->subscription->handle_linked_subscription_request_data($this->request->data); // save info subscriptions_users $this->subscription->user->saveall($data); // proceed confirm $this->confirm($subdata_userdata); } the function handle_linked_subscription_request_data in subscription model:
public function handle_linked_subscription_request_data($data) { // set array info -> subscriptions_users $linked_data = array(); if(isset($data) && !empty($data)) { // subscriptiondata used in calculations valid_until, terminate_at ... $this_subscription = $this->findbyid($data['user']['register_subscription_id']); if(isset($this_subscription) && !empty($this_subscription)) { $linked_data['subscription']['id'] = $data['user']['register_subscription_id']; $linked_data['user']['id'] = $data['user']['id']; // add together number of months current date binding ends $linked_data['valid_until'] = date('y-m-d', strtotime("+1 month")); $linked_data['activated'] = date('y-m-d'); $linked_data['binding_to'] = date('y-m-d', strtotime("+" . (int)$this_subscription['subscription']['binding_months'] . " months")); } else { homecoming false; } } else { homecoming false; } unset($data); homecoming $linked_data; } id, user_id , subscription_id works , inserted in subscription_users "linking table" data:
$linked_data['valid_until'] = date('y-m-d', strtotime("+1 month")); $linked_data['activated'] = date('y-m-d'); $linked_data['binding_to'] = date('y-m-d', strtotime("+" . (int)$this_subscription['subscription']['binding_months'] . " months")); just wont insert, i've tried different ways of inserting changing array indexes.
and ideas how create horrible solution improve appreciated :)
edit: solved formatting array this, still ugly.
$linked_data['subscription']['user'] = array( 'subscription_id' => $data['user']['register_subscription_id'], 'user_id' => $data['user']['id'], 'valid_until' => date('y-m-d', strtotime("+1 month")), 'activated' => date('y-m-d'), 'binding_to' => date('y-m-d', strtotime("+" . (int)$this_subscription['subscription']['binding_months'] . " months")) ); cakephp save linked-tables
No comments:
Post a Comment