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

نام تاپیک: table relations در کیک

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

    table relations در کیک

    در کار با تیبل ها و کیک پی اچ پی با چیز هایی که دیدم ایمان آوردم

    حالا دو تا سوال دارم،
    1-hasAndBelongsToMany (HABTM) رو فهمیدم متها فکر مکنم اشتباه درک کرده باشم، این سیستم یا یک تیبل واسطه سیستم relastion و رول بک رو انجام میده؟ و روش دقیق پیاده سازیی چی هست؟


    2- ما دو تا تیبل داریم
    1- تیبل album :

    CREATE TABLE `photoblogs` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `title` varchar(400) COLLATE utf8_persian_ci NOT NULL,
    `titlef` varchar(400) COLLATE utf8_persian_ci DEFAULT NULL,
    `date` int(11) NOT NULL,
    `info` text COLLATE utf8_persian_ci,
    `infof` text COLLATE utf8_persian_ci,
    `filename` varchar(255) COLLATE utf8_persian_ci NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;


    تیبل عکس ها :


    CREATE TABLE `photos` (
    `id` int(11) NOT NULL,
    `photoblog_id` int(11) NOT NULL,
    `titlep` varchar(400) COLLATE utf8_persian_ci DEFAULT NULL,
    `titlepf` varchar(400) COLLATE utf8_persian_ci DEFAULT NULL,
    `ext` char(5) COLLATE utf8_persian_ci DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;


    خوب رابطه تبیل ها کاملا مشخص هست.

    حالا من می خوام زمانی که کل تیبل photoblogs رو واکشی میکنم بیاد اولین رکورد از مجموعه رکورد های که با هر رکورد در photoblogs مرتبط هست رو هم واکشی کنه،

    $this->Photoblog->recursive = 0;
    $this->Photoblog->find('all');



    این کد ها همه رو واکشی میکنه مثلا اگر یک رکورد در تیبل photoblogs با ای دی 1 داشته باشیم و در تیبل photo هم 5 رکورد که با photoblog_id مرتبط هست رو هم واکشی میکنه
    در صورتی که من فقط رکورد اولش رو می خوام


    ممنون راهنمایی کنید

  2. #2
    کاربر دائمی
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    ایران
    پست
    136

    نقل قول: table relations در کیک

    نقل قول نوشته شده توسط zoghal مشاهده تاپیک

    2- ما دو تا تیبل داریم

    این کد ها همه رو واکشی میکنه مثلا اگر یک رکورد در تیبل photoblogs با ای دی 1 داشته باشیم و در تیبل photo هم 5 رکورد که با photoblog_id مرتبط هست رو هم واکشی میکنه
    در صورتی که من فقط رکورد اولش رو می خوام


    ممنون راهنمایی کنید
    این سرسیعترین راهی که به ذهنم رسید، قول نمی دم بهترین باشه


    $this->Photoblog->recursive = 1;
    $this->Photoblog->bindModel(
    array('hasMany' => array(
    'photo' => array(
    'className' => 'photo',
    'limit' => '1'
    )
    )
    )
    );
    $Photoblogs = $this->Photoblog->find('all');
    $this->set('Photoblogs',$Photoblogs);

  3. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    ایران
    پست
    136

    نقل قول: table relations در کیک

    نقل قول نوشته شده توسط zoghal مشاهده تاپیک
    در کار با تیبل ها و کیک پی اچ پی با چیز هایی که دیدم ایمان آوردم

    حالا دو تا سوال دارم،
    1-hasAndBelongsToMany (HABTM) رو فهمیدم متها فکر مکنم اشتباه درک کرده باشم، این سیستم یا یک تیبل واسطه سیستم relastion و رول بک رو انجام میده؟ و روش دقیق پیاده سازیی چی هست؟

    اگه میشه سوالت رو یکم واضحتر با جزئیات بپرس.تا بدونم دقیقا با کجاش مشکل داری.

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

    نقل قول: table relations در کیک

    مرسی در مورد سوال دوم هم خودم به bindModel رسیدم

    اما سوال اول در روش hasAndBelongsToMany ، در این روش معلوم هست که یک تیبل با رابطه های n به n (ریلیشن) هست.

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

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

    نقل قول: table relations در کیک

    من شدیدا گیج شدم سر این نحوه ریلیشن ها

    فرض کنید 4 تا تیبل داریم، که وابستگیشون به این صورت هست

    تیبل 1 <--- تیبل 2 <--- تیبل 3 ---> تیبل 4

    حالا ما در مدل تیبل 3 هستیم ، میخوام با یک find('alll') همه اطلاعات رو بدست بیارم؟ چطوری میشه؟ اینکا رو کرد؟

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

    نقل قول: table relations در کیک

    خوب تقریبا فهمیدم چی به چی هست، منتها موندم تو این موضوع که آیا بهتر نیست برای بیشتر تیبل ها از روش hasAndBelongsToMany استفاده کنیم؟

  7. #7
    کاربر دائمی
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    ایران
    پست
    136

    نقل قول: table relations در کیک

    خوب امتحان ماهم تموم شد اومدیم.
    استفاده ار HABTM برای تمام جدول هایی که نیاز به relation دارن درست مثل اینه که بگی من می خوام ماشین بخرم، حالا که اینطوره یکدفعه برم اتوبوس بخرم!!!
    هر چیزی یک هزینه ای داره و باری رو به Application شما وارد می کته.به طور کلی در کار با جداولی که از رابطه HABTM استفاده می کنن به شدت دچار پیچیدگی میشین و همچنین از لحاظ سرعت به طور قابل ملاحظه ای (به دلیل ارتباط Many To Many) دچار افت میشین.
    بهتره از هر کدوم از سه شیوه :
    • hasOne(ارتباط یک به یک)
    • hasMany(ارتباط یک به چند)
    • hasAndBelongsToMany(ارتباط چند به چند)

    در جای خودش استفاده بشه.

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

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