рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ рдореИрдВрдиреЗ рдПрдХ рдШрдЯрдХ рд▓рд┐рдЦрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рдХреЙрд░реНрдб (CActiveRecord) рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЕрдХреНрд╕рд░ рджреЛрд╣рд░рд╛рдП рдЧрдП рдХреЛрдб рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрд╕рдХреЗ рд╕рднреА рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореИрдВрдиреЗ рдпрд╣ рд▓рд┐рдЦрд╛ рд╣реИ):
if ($client->save()) { foreach ($contacts as $contact) { $contact->clientId = $client->primaryKey; $contact->save(); } }
рдмреЗрд╢рдХ, рдпрд╣ рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд╕рд╛рде рд╣реИ, рдФрд░ рдПрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рднреА рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд╕реНрдкрд░ рдореЙрдбрд▓ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХреЛрдб рдмрдирд╛рдирд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлреЙрд░реНрдо рд╕реЗ рдРрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдПрдХ рдирдпрд╛ рдЧреНрд░рд╛рд╣рдХ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ 1 рдкрддрд╛ рдФрд░ рдХрдИ рд╕рдВрдкрд░реНрдХ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ; рдЙрд╕реА рд╕рдордп, рдХреНрд▓рд╛рдЗрдВрдЯ рдирд┐рд░реНрдорд┐рдд рдЖрджреЗрд╢ рдФрд░ рдЪрд╛рд▓рд╛рди рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ; рдФрд░ рдЖрджреЗрд╢, рдмрджрд▓реЗ рдореЗрдВ, рдЪрд╛рд▓рд╛рди рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрди рд╕рднреА рдореЙрдбрд▓реЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
public function actionCreate() { $order = new Order; $address = new Address; $user = new User; $contacts = array(new Contact); $invoice = new Invoice; if (isset($_POST['Submit'])) { $user->saveWith($address, $_POST['Address'], 'addressId'); $user->saveWith($contacts, $_POST['Contact'], 'userId'); $order->saveWith($user, $_POST['User'], 'userId'); $invoice->saveWith($order, $_POST['Order'], 'orderId'); $invoice->saveWith($user, $_POST['User'], 'userId'); $invoice->attributes = $_POST['Invoice']; if ($invoice->relationalSave()) { echo 'Saved'; } else { echo 'Not saved'; } } $this->render('create', array('order' => $order, 'user' => $user, 'invoice' => $invoice, 'address' => $address, 'contacts' => $contacts)); }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рдореЙрдбрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛) рдФрд░ рдСрд░реНрдбрд░ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдСрд░реНрдбрд░ рдХреЗ рд╕рд╛рде, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреА рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдкрд░реНрдХ рд╕реВрдЪреА рдФрд░ рдкрддрд╛ред
рдпрд╣ рдмрдЪрдд рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдореБрдЦреНрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдВрдЬреА рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдореБрдЦреНрдп рдореЙрдбрд▓ рдореЗрдВ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛ред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбрд▓реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбрд▓ рдореЗрдВ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХрд╛ рдирд╛рдо рд╣реИред
рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдореЙрдбрд▓ рдпрд╛ рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдбреЗрдЯрд╛ рдорд╛рд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛:
$model->attributes = $_POST['Model'];
рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реАрдорд╛ рдбреЗрдЯрд╛ рд╕рд░рдгреА рдХреЗ рдЕрдиреБрд░реВрдк рдореЙрдбрд▓ рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЛ 0 рдкрд░ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдВрддрд░рд╛рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╢рд╛рдпрдж рдпрд╣ рд╕реЛрдЪрдХрд░ рдореИрдВ рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрд╣реБрдБрдЪ рд╕рдХрддрд╛ рд╣реВрдБред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбрд▓ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдореЙрдбрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдПрдХ рдЪреМрдерд╛ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рд╣реИ, рд╡реИрдХрд▓реНрдкрд┐рдХ, рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рдВрдкреВрд░реНрдг рд╕рд░рдгреА рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЦрд╛рддреЗ рд╕реЗ рдЬреБрдбрд╝реА рднреБрдЧрддрд╛рди рдХреА рд░рд╛рд╢рд┐ рдЦрд╛рддреЗ рдХреА рд░рд╛рд╢рд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рддреНрдпрд╛рдкрди рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реИрдз ($ рдореЙрдбрд▓) рд╡рд┐рдзрд┐ рд╣реЛ, рдЬреЛ рдореЙрдбрд▓ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рд╕рдлрд▓ рдпрд╛ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рджреЗрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдмрдЪрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбрд▓ рдХреА рдПрдХ рд╕рд░рдгреА рдкрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рдЙрд╕ рдШрдЯрдХ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ Yct
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ CActiveRecordBehavior рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдЖрдкрдХреА рд░рд╛рдп рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдВрдЧреЗред