PDA

View Full Version : ذخیره اطلاعات 3 مدل مرتبط



reza.palang
چهارشنبه 30 دی 1388, 21:06 عصر
با سلام مجدد
من می خوام توی یک فرم، اطلاعاتی رو وارد کنم که مال 3 تا مدل متفاوت هست که
model1 hasMany model2 HABTM model3
ولی اطلاعات مدل شماره 3 ذخیره نمیشه.
این رو هم بگم که توی کنترولر از saveAll() استفاده کردم

reza.palang
چهارشنبه 30 دی 1388, 23:44 عصر
آرایه 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
)
)
)

maysamscript
پنج شنبه 01 بهمن 1388, 14:36 عصر
احیاناً مدل 3 دارای فیلد id هست و اون دوتا مدل دیگه بدون id هستند یا بلعکس. اینجوری فکر میکنم اگر قبل از saveAll از create استفاده شده باشه اجازه آپدیت یا اینسرت مدل شامل آیدی را نمیده

zoghal
جمعه 02 بهمن 1388, 12:24 عصر
کر فرم تون رو هم قرار بدید

reza.palang
شنبه 03 بهمن 1388, 11:04 صبح
این کد فرم هست


<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;
?>

zoghal
شنبه 03 بهمن 1388, 14:46 عصر
من چیز زیادی متوجه نشدم. اما لطفا قبل از از اینکه به مرحله saveall برسید. لطفا دستور زیر را قرار بدید و خروجی آرایه رو ایجا قرار بدید.


debug($this->data);


مورد بعدی بفرمائید با چه ورژنی کار میکنید. ؟ اگر با نسخه 1.2.5 به پائین کار میکنید.
یکبار با ورژن های 1.3 امتحان بزنید.

reza.palang
شنبه 03 بهمن 1388, 15:21 عصر
خروجی این هست


(
[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 بدون مشکل ذخیره میشن

maysamscript
یک شنبه 04 بهمن 1388, 17:07 عصر
چون مدل 2 با مدل 3 رابطه چند به چندی داره پس باید مدل چهارمی باشه بین این دو مدل که رابطه ها درست در بیاد.

model1 hasMany model2 HABTM model3
این یکم مبهمه. رابطه ها دقیق بگید

reza.palang
یک شنبه 04 بهمن 1388, 21:03 عصر
چون مدل 2 با مدل 3 رابطه چند به چندی داره پس باید مدل چهارمی باشه بین این دو مدل که رابطه ها درست در بیاد.

این یکم مبهمه. رابطه ها دقیق بگید
اون دیگه مدل نمیخواد. فقط یک جدول واسط لازم داره که ستون های اون (model2_id & model3_id) هست. اون جدول موجود هست. همون طور هم که گفتم این رابطه وقتی از مدل2 برای ذحیره استهاده میکنم درست کار می کنه ولی از مدل1 مشکل دداره
...............
بذارید سوال رو جور دیگه ای بپرسم:

$this->data
آرایه این متغیر به چه صورت باید باشه تا من اطلاهات هر 3 مدل رو با ارتباطاتش درست ذخیره کنه