PDA

View Full Version : مبتدی : مشکل در درج رکورد در yii (حل شد)



barname_newis
جمعه 19 اردیبهشت 1393, 10:43 صبح
سلام
من یه مشکل دارم :
من چند تا مقدار id رو از فرم میگیرم (مشخصه name فیلد خودم در فرم رو به صورت آرایه میفرستم و سمت سرور هم وقتی print_r میکنم مشکلی نداره و همه مقادیری که ارسال کردم چاپ میشه)
ولی وقتی میخوام با کد های زیر تو جدول رکورد جدید ایجاد کنم فقط آخرین سلول آرایه (همون آرایه ای که از سمت کلاینت و فرم ارسال شده) در بانک ذخیره میشه

$products_has_product_categories=new ProductsHasProductCategories;
$productId=$model->product_id;
foreach($_POST['products_has_product_categories'] as $category)
{
$products_has_product_categories->product_categories_product_category_id=$category;
$products_has_product_categories->products_product_id=$productId;
$products_has_product_categories->save();
}

در واقع این کد بالا مربوط به جدول میانی هست که دو فیلد داره . فیلد product_categories_product_category_id که آی دی جدول شاخه ها رو میگیره و فیلد products_product_id هم آی دی آخرین محصول ساخته شده .
ولی مشکل اینجاست که اگه کاربر مثلا 3 آی دی برای شاخه ها ارسال کرده باشه تو بانک فقط آخرین سلول آرایه ای که ازسال شده قرار میگیره . مثلا اگه کاربر آی دی های 3 4 و 5 رو برای products_has_product_categories ارسال کرده باشه فقط تو بانک رکورد با فیلد product_categories_product_category_id مقدار 5 وارد میشه
ممنون میشم راهنمایی کنید

MMSHFE
جمعه 19 اردیبهشت 1393, 10:59 صبح
این خط رو بیارین توی حلقه:

$products_has_product_categories=new ProductsHasProductCategories;
علت این اتفاق اینه که دفعه اول که حلقه اجرا میشه، متغیر شما یک اکتیو رکورد جدیده و وقتی save رو صدا میزنید، میره insert رو صدا میزنه و بهش id میده و isNewRecord مقدارش false میشه و درنتیجه دفعات بعد که save رو صدا میزنید، update صدا زده میشه و همون رکورد قبلی رو داره تغییر میده ولی اگه هربار توی حلقه یک شئ جدی ایجاد کنید، این اتفاق نمیفته.

barname_newis
جمعه 19 اردیبهشت 1393, 11:17 صبح
حل شد
با سپاس ویژه