نمایش نتایج 1 تا 2 از 2

نام تاپیک: ارتباط 2 فیلد که به یک فیلد از تیبل دیگر متصل هست.

  1. #1
    کاربر دائمی آواتار zoghal
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    همدان
    سن
    41
    پست
    401

    ارتباط 2 فیلد که به یک فیلد از تیبل دیگر متصل هست.

    یک تیبل داریم به نام user که تو این تیبل هر یوز می تونه در یک گروه قرار بگیره.

    مثلا گروه مشتری و پشتیبان


    حال در یک تیبل دیگر که در واقع یک سیستم مسجینگ هست
    2 فیلد داریم که یکی باید ای مشتری و دیگری ای دی پشتیبان رو نگه داره

    از اونجا که در کیک باید فیلد های که با تیبلی دیگر مرتبط هست باید به صورت Table_filed نام گذاری شود

    سوال اینجاست که در این حالت من چطور میتونم 2 فیلد رو به یک فیلد در تیبل دیگر مربیط کنم و فرضا اگر فیلد مشتری user_id باشه ، فیلد پشتیبان چه صوری باید نام گزاری بشه

  2. #2
    کاربر دائمی آواتار zoghal
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    همدان
    سن
    41
    پست
    401

    نقل قول: ارتباط 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'

    )
    )


قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •