PDA

View Full Version : سوال در مورد رابطه چند به چند در yii



barname_newis
چهارشنبه 10 اردیبهشت 1393, 20:51 عصر
سلام
من یه پروژه دارم با ییی مینویسم که بخش محصولات و شاخه ها این طور هست :
هر محصول ممکنه چند شاخه داشته باشه (رابطه چند به چند)
عکس بانک :
http://www.uploadax.com/images/62728674999677874301.jpg

ممنون میشم روش استاندارد ایجاد محصول جدید (که بخش شاخه های محصول مرتبط با بحث من هست) رو بهم بگید .
ممنون

MMSHFE
پنج شنبه 11 اردیبهشت 1393, 11:16 صبح
خوب این روش بنظرم یکم اشکال داره. شما باید یک جدول واسط (مثلاً به اسم productcategories) بگذارین که دو فیلد داره (product_id و category_id) و دو فیلد رو با هم، کلید اصلی کنید. بعد فیلد product_id رو به فیلد product_id جدول product و فیلد category_id رو به فیلد product_category_id جدول product_categories وصل کنید (یعنی برای هر فیلد، یک کلید خارجی به جدول مربوطه بزنید). بعد توی مدل Products و ProductCategories در قسمت relations از نوع self::MANY_MANY استفاده کنید و با کمک جدول واسط، ارتباط رو تعریف کنید. مثال:

class Products extends CActiveRecord {
...
public function relations() {
return array(
'categories' => array(self::MANY_MANY, 'ProductCategories', 'productcategories(product_id,category_id)'),
);
}
...
}

class ProductCategories extends CActiveRecord {
...
public function relations() {
return array(
'products' => array(self::MANY_MANY, 'Products', 'productcategories(category_id,product_id)'),
);
}
...
}

barname_newis
چهارشنبه 17 اردیبهشت 1393, 14:40 عصر
میشه توضیح بدید که چطور میشه category هر محصول رو در زمان سابمیت شدن فرم ایجاد محصول تو جدول مربوطه ثبت کنم؟
ممنون

MMSHFE
چهارشنبه 17 اردیبهشت 1393, 14:47 عصر
منظورتون رو متوجه نمیشم. دسته بندی که قبلاً ثبت شده. شما فقط باید id رکورد انتخاب شده از جدول دسته بندی رو توی رکورد مربوطه در جدول محصولات ثبت کنید. برای این کار هم میتونید لیست دسته بندی ها رو بصورت DropDown (تگ Select) قرار بدین و از id دسته بندی بعنوان value تگ option استفاده کنید).