PDA

View Full Version : مشکل ذخیره رکورد یک مدل در مدل دیگر



jionelmessi
پنج شنبه 21 اسفند 1393, 15:02 عصر
با سلام
من یک سیستمی دارم که مخاطبین را ثبت می کند و یک مخاطب می تواند عضو چند گروه باشد

جدول مخاطبام اینجوره
contactId
name
....
جدول گروه هامم اینجوره
groupid
name
....
یه جدول میان رابطه ای دارم اینه
groupid
contactid

من امدم تومدل contact هام تو رویداد aftersave نوشتم تمام گروه های ارسالی توسط فرمو با ایدی اخیر کهثبت شده برو تو جدول میان رابه ای ذخیره کن
خود جدول میان رابطه ای منم مدل داره
ولی وقتی متد سیو اونو صدا مکنم با اینکه true بر مگردونه ولی چیزی سیو نمشه تو دیتابیس
اینم کد منه



//save group marketers
//check select any marketer gorup?
if(isset($_POST["MarketerGroup"]))
{
//create active record of marketer group of contact
$MarketerGroup = ContactGroupMarketer::model();
//loop from marketer gorup
$ContactId = $this->id;
foreach ($_POST["MarketerGroup"] as $key => $value)
{
//set attributes and save record.
$MarketerGroup->attributes = array('contact_id'=>$ContactId, 'group_id'=>$value);
if($MarketerGroup->save())
echo $value;
}

}

MMSHFE
پنج شنبه 21 اسفند 1393, 23:22 عصر
اشتباه صدا میزنید. باید اینطوری مدل جدید ایجاد کنید:

if(isset($_POST['MarketerGroup'])) {
foreach($_POST['MarketerGroup'] as $group) {
$MarketerGroup = new ContactGroupMarketer;
$MarketerGroup->groupid = $group;
$MarketerGroup->contactId = $this->id;
if($MarketerGroup->save()) {
echo '<p>' . $value . '</p>';
}
}
}

jionelmessi
جمعه 22 اسفند 1393, 12:42 عصر
چرا وقتی اینو منویسم فقط یه رکوردو ذخیره می کنه؟



$model->attributes = array('fieldname'=> value, 'filedname'=> valuem....);

MMSHFE
جمعه 22 اسفند 1393, 12:46 عصر
چون شما یکبار مدل رو ساختین و داره هربار خاصیتهای همون رو تغییر میده و دوباره save میکنه. باید توی foreach هربار یک رکورد جدید بسازین. فراموش نکنید که هر ActiveRecord طبق اصول این معماری، نماینده یک رکورد در دیتابیس هست و تا وقتی که new نکنید، به همون رکورد قبلی داره اشاره میکنه.