ارتباط 2 فیلد که به یک فیلد از تیبل دیگر متصل هست.
یک تیبل داریم به نام user که تو این تیبل هر یوز می تونه در یک گروه قرار بگیره.
مثلا گروه مشتری و پشتیبان
حال در یک تیبل دیگر که در واقع یک سیستم مسجینگ هست
2 فیلد داریم که یکی باید ای مشتری و دیگری ای دی پشتیبان رو نگه داره
از اونجا که در کیک باید فیلد های که با تیبلی دیگر مرتبط هست باید به صورت Table_filed نام گذاری شود
سوال اینجاست که در این حالت من چطور میتونم 2 فیلد رو به یک فیلد در تیبل دیگر مربیط کنم و فرضا اگر فیلد مشتری user_id باشه ، فیلد پشتیبان چه صوری باید نام گزاری بشه
نقل قول: ارتباط 2 فیلد که به یک فیلد از تیبل دیگر متصل هست.
راهش رو پیدا کردم
توضیح میدم تا دوستان هم استفاده کنند.
من یک تیبل دارم به اسم users
با مشخصات زیر
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(200) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL ,
`email` varchar(200) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL ,
`password` varchar(100) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL ,
`mobile` varchar(15) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL ,
`hospital_id` int(11) NULL DEFAULT NULL ,
`rule` varchar(20) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL DEFAULT '0' ,
`active` tinyint(4) NOT NULL DEFAULT 1 ,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci
AUTO_INCREMENT=12
CHECKSUM=0
ROW_FORMAT=DYNAMIC
DELAY_KEY_WRITE=0
;
و تبل دیگری به نام reports مشخصات
CREATE TABLE `reports ` (
`id` int(11) NOT NULL ,
`type` varchar(20) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL ,
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL ,
`text` text CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL ,
`user_id` int(11) NOT NULL ,
`status` int(11) NOT NULL DEFAULT 0 ,
`sup_id` int(11) NULL DEFAULT 0 ,
`close` int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci
CHECKSUM=0
ROW_FORMAT=DYNAMIC
DELAY_KEY_WRITE=0
;
در تیبل users تمامی کاربران که دارای گروه های مختلفی هستند نگهداری میشه
حالا در تیبل reports ما دوتا تیبل داریم که یکی user_id هست و ای مشتری و دیگری sup_id که ای دی پشتیبان هست
حالا می خواستم با یک بار واکشی نام مشتر به همراه کسی ک ساپورت انجام داده رو بدست بیارم
به صورت استاندارد کیک باید فیلد های که با جداول دیگر رابطه دارند باید اینگونه طراحی شوند tablename_filedRelastion
مشکل اینجا شد که نمیشه 2 فیلد هم نام داشته باشیم، پس راهی نیست که این 2 واکشی انجام بدیم(راه فرار)
اما تو کیک به روش زیر حل شد
در مدل reports دو ریلیشن $belongsTo تعریف کردم یکی که مربوط به جدول user بود و دیگری مجازی تعریف کردم
به این صورت
var $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
),
'Spp' => array(
'className' => 'User',
'foreignKey' => 'sup_id'
)
)