با سلام مجدد
من می خوام توی یک فرم، اطلاعاتی رو وارد کنم که مال 3 تا مدل متفاوت هست که
model1 hasMany model2 HABTM model3
ولی اطلاعات مدل شماره 3 ذخیره نمیشه.
این رو هم بگم که توی کنترولر از saveAll() استفاده کردم
با سلام مجدد
من می خوام توی یک فرم، اطلاعاتی رو وارد کنم که مال 3 تا مدل متفاوت هست که
model1 hasMany model2 HABTM model3
ولی اطلاعات مدل شماره 3 ذخیره نمیشه.
این رو هم بگم که توی کنترولر از saveAll() استفاده کردم
آرایه data به این صورت هست که باید ذخیره بشه.
مدل3 و ارتباطاتش ذخیره نمیشه
[data] => Array
(
[Model1] => Array
(
[field1] => some info
[field2] => some info
)
[Model2] => Array
(
[0] => Array
(
[field1] => some info
[field2] => some info
[field3] => some info
)
)
[Model3] => Array
(
[0] => Array
(
[field1] => some info
)
)
)
احیاناً مدل 3 دارای فیلد id هست و اون دوتا مدل دیگه بدون id هستند یا بلعکس. اینجوری فکر میکنم اگر قبل از saveAll از create استفاده شده باشه اجازه آپدیت یا اینسرت مدل شامل آیدی را نمیده
کر فرم تون رو هم قرار بدید
این کد فرم هست
<div class="form">
<?php echo $form->create('Model1');?>
<fieldset>
<legend>افزودن</legend>
<?php
// create the form inputs
echo $form->input('Model1.first_name', array('label'=>'نام: *'));
echo $form->input('Model1.last_name', array('label'=>'نام خانوادگي: *'));
// create the form inputs
echo $form->input('Model2.0.name', array('label'=>'نام: *'));
echo $form->input('Model2.0.model3s', array('label'=>' شناسه هاي مدل 3 (با کاما از هم جدا شوند):'));
?>
</fieldset>
<center> <?php echo $form->end('تاييد');?> </center>
</div>
و این هم کد بخشی که اطلاعات مدل سوم رو برای ذخیره آماده می کنه
<?php
$this->Model1->create();
// in tabe meghdare "$this->data['Model2'][0]['model3s']" ra migire va az jahai ke camma dashte bashe un ro mishkane va be araye tabdil mikone
$model3s_id = $this->_parse_model3s($this->data['Model2'][0]['model3s']);
// araye tolid shode dar khate bala inja set mishe
$this->data['Model3'] = $model3s_id;
?>
من چیز زیادی متوجه نشدم. اما لطفا قبل از از اینکه به مرحله saveall برسید. لطفا دستور زیر را قرار بدید و خروجی آرایه رو ایجا قرار بدید.
debug($this->data);
مورد بعدی بفرمائید با چه ورژنی کار میکنید. ؟ اگر با نسخه 1.2.5 به پائین کار میکنید.
یکبار با ورژن های 1.3 امتحان بزنید.
خروجی این هست
(
[Model1] => Array
(
[field1] => some info
[field2] => some info
)
[Model2] => Array
(
[0] => Array
(
[field1] => some info
[field2] => some info
[field3] => some info
)
)
[Model3] => Array
(
[0] => some info
)
)
ورژنش 1.2.5 هست
وقتی از مدل2 استفاده میکنم مشکلی نداره و اطلاعات مدل3 بدون مشکل ذخیره میشن
چون مدل 2 با مدل 3 رابطه چند به چندی داره پس باید مدل چهارمی باشه بین این دو مدل که رابطه ها درست در بیاد.
این یکم مبهمه. رابطه ها دقیق بگیدmodel1 hasMany model2 HABTM model3
اون دیگه مدل نمیخواد. فقط یک جدول واسط لازم داره که ستون های اون (model2_id & model3_id) هست. اون جدول موجود هست. همون طور هم که گفتم این رابطه وقتی از مدل2 برای ذحیره استهاده میکنم درست کار می کنه ولی از مدل1 مشکل دداره
...............
بذارید سوال رو جور دیگه ای بپرسم:
$this->data
آرایه این متغیر به چه صورت باید باشه تا من اطلاهات هر 3 مدل رو با ارتباطاتش درست ذخیره کنه