زمان جاری: 2012/05/25, 04:33 AM خوش آمدید مهمان گرامی! (ورودعضویت)



توضیح درمورد Relationship


ارسال موضوع  ارسال پاسخ 
  • 2 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع:
 
توضیح درمورد Relationship
نویسنده پیام
alri آفلاین
عضو جدید
*

ارسال‌ها: 11
تاریخ عضویت: Dec 2010
رتبه: 0
تشکر: 2
1 بار تشکر شده در 1 پست
ارسال: #1
توضیح درمورد Relationship
سلام
اگر امکان داره در مورد hasAndBelongsToMany و belongsTo
وکلا این ارتباطات را چگونه برقرار می کند ؟ کدام جدول به کدام جدول وصل می شود . با مثال توضیح بدهید .با تشکرDodgy
2010/12/22 11:31 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
Alir3z4 آفلاین
تازه کار
*

ارسال‌ها: 26
تاریخ عضویت: Nov 2010
رتبه: 1
تشکر: 1
4 بار تشکر شده در 14 پست
ارسال: #2
RE: توضیح درمورد Relationship
belongTo به معني اينكه اين مدل مورد نظرت با كدوم مدل ارتباط داره.
مثلا براي من جدول SubCategories با جدول Category ارتباط داره
hasAndBelongsToMany هم يعني اينكه هم به جدول ديگه وابسته هست و هم اينكه ركورد هاي زيادي از جدول ديگه به همين جدول در ارتباط هستن
کد PHP:
<?php
class Post extends AppModel {

    var 
$name 'Post';

    
    var 
$validate = array(
        
'title' => array(
        
'rule' => array('minLength'1),
        
'message' => 'Title is required.'
        
)
    );
    

    
//The Associations below have been created with all possible keys, those that are not needed can be removed
    
var $belongsTo = array(
            
'Status' => array('className' => 'Status',
                                
'foreignKey' => 'status_id',
                                
'conditions' => '',
                                
'fields' => '',
                                
'order' => '',
                                
'counterCache' => true
            
)
    );

    var 
$hasAndBelongsToMany = array(
            
'Tag' => array('className' => 'Tag',
                        
'joinTable' => 'posts_tags',
                        
'foreignKey' => 'post_id',
                        
'associationForeignKey' => 'tag_id',
                        
'unique' => true,
                        
'conditions' => '',
                        
'fields' => '',
                        
'order' => '',
                        
'limit' => '',
                        
'offset' => '',
                        
'finderQuery' => '',
                        
'deleteQuery' => '',
                        
'insertQuery' => ''
            
)
    );

      

}
?>
مثلا در كد بالا مدل Post با جدول Status در ارتباط هست كه ستون status_id كه در جدول post هستش به عنوان foreign key شناخته ميشه كه ميگيمbelongsTo


hasAndBelongsToMany هم كه ديگه ساده هستش
____________
مرسي از صالح واسه برطرف كردن اشتباه!
(آخرین تغییر در این ارسال: 2010/12/24 02:29 AM توسط Alir3z4.)
2010/12/23 12:10 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
alri آفلاین
عضو جدید
*

ارسال‌ها: 11
تاریخ عضویت: Dec 2010
رتبه: 0
تشکر: 2
1 بار تشکر شده در 1 پست
ارسال: #3
RE: توضیح درمورد Relationship
متشکر از جواب
وقتی که این ارتباطات رو برقرار می کنیم و حالا می خواهیم که شروع به کار کنیم یک جدول رو با id به یک جدول دیگر وصل می کنیم ولی وقتی می خواهیم add رو انجام بدهیم درست است که ستون id مرکز اتصال است ولی درموقع add کردن این ستون نمایش داده نمی شود و مثلا name نمایش داده می شود . می تونیم تعیین کنیم که چه چیزهایی در موقع add کردن نمایش داده شود ؟

( فکر کنم افتضاح سوال رو مطرح کردم ) Idea
2010/12/23 02:12 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
Alir3z4 آفلاین
تازه کار
*

ارسال‌ها: 26
تاریخ عضویت: Nov 2010
رتبه: 1
تشکر: 1
4 بار تشکر شده در 14 پست
ارسال: #4
RE: توضیح درمورد Relationship
(2010/12/23 02:12 PM)alri نوشته است:  ( فکر کنم افتضاح سوال رو مطرح کردم ) Idea
+1 من متوجه نشدم درست چي ميخوايHuh
2010/12/23 06:27 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #5
RE: توضیح درمورد Relationship
وقت ندارم وگرنه آموزش کامل مینوشتم.

ما کلا 4 نوع ارتباط داریم.


1 - یک به یک hasOne
2- یک به چند hasMany
3- چند به یک belongsTo
4- چند به چند hasAndBelongsToMany


اصطلاحی که علی رضا به کار برد کاملا اشتباه هست. تعلق داشتن با ار تباط داشتن فرق میکنه. در این مورد ما بایست بگویم ارتباط دارد.

حال من با تصویر کاملا توضیح میدم

1- hasOne:
   

در این ارتباط هر رکورد در جدول یوزر فقط با یک رکورد در جدول پروفایل مرتبط هست
کد PHP:
<?php

class User extends AppModel {
    var 
$name 'User';                
    var 
$hasOne 'Profile';   
}
?>

2- hasMany :
   
هر کاربر در یک سیستم می تواند چندین نظر داده باشد.
پس این نوع ارتباط به این معنی می باشد که هر رکورد در جدول کاربران می تواند با چندین رکورد در جدول نظرات ارتباط داشته باشد


کد PHP:
<?php
class User extends AppModel {
    var 
$name 'User';                
    var 
$hasOne 'Profile';   
    var 
$hasMany 'Comment';
    
}
?>


3- belongsTo
   
این ارتباط دقیقا بر عکس ارتباط hasMany هست . در این ارتباط تمامی رکورد ها در جدول پست ها با یک یکی از رکورد در جدول کتگوری در ارتباط هست


کد PHP:
<?php
class Comment extends AppModel {
    var 
$name 'Comment';                

    var 
$belongsTo 'User';
    
}
?>


4- hasAndBelongsToMany :
   
در ارتباط چند به چند از یک جدول واسطه اسیتفاده میشه تو شکل کاملا مشخص هست. و به صورت زیر استفاده میشه

کد PHP:
<?php
class User extends AppModel {
    var 
$name 'User';                
    var 
$hasOne 'Profile';   
    var 
$hasMany 'Comment';
    var 
$hasAndBelongsToMany = array(
        
'Study' =>
            array(
                
'className'              => 'Study',
                
'joinTable'              => 'users_studies',
                
'foreignKey'             => 'user_id',
                
'associationForeignKey'  => 'study_id',
                
'unique'                 => true,
                
'conditions'             => '',
                
'fields'                 => '',
                
'order'                  => '',
                
'limit'                  => '',
                
'offset'                 => '',
                
'finderQuery'            => '',
                
'deleteQuery'            => '',
                
'insertQuery'            => ''
            
)
    );
}
    
?>
(آخرین تغییر در این ارسال: 2010/12/24 01:46 AM توسط saleh.)
2010/12/24 01:11 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : امیر cybercoder Alir3z4 payamsp nimaboy alri aziminia fiendish k.a.darvishi sibetorsh MajidVIP
Alir3z4 آفلاین
تازه کار
*

ارسال‌ها: 26
تاریخ عضویت: Nov 2010
رتبه: 1
تشکر: 1
4 بار تشکر شده در 14 پست
ارسال: #6
RE: توضیح درمورد Relationship
بله صالح درست ميگه در مورد اصطلاح تعلق داشتن
من اشتباه بكار بردم.
مرسي صالح.
پست ويرايش شد.
2010/12/24 02:31 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
nimaboy آفلاین
عضو جدید
*

ارسال‌ها: 17
تاریخ عضویت: Nov 2010
رتبه: 0
تشکر: 0
10 بار تشکر شده در 4 پست
ارسال: #7
RE: توضیح درمورد Relationship
ممنون از توضیحات خوب که به نظر می رسید باید خیلی زودتر از این ها تو سایت قرار می گرفت.

برای طراحی دیتابیس هم از برنامه Mysql workbench استفاده شده، لینک دانلودش چون کم پیدا میشه به دلیل تحریم ، بنده اینجا قرار دادم، البته خیلی ها ترجیح می دن از نوت پد استفاده کنند!Rolleyes

دانلود برنامه
2010/12/24 04:32 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : payamsp alri aziminia sibetorsh
alri آفلاین
عضو جدید
*

ارسال‌ها: 11
تاریخ عضویت: Dec 2010
رتبه: 0
تشکر: 2
1 بار تشکر شده در 1 پست
ارسال: #8
RE: توضیح درمورد Relationship
تشکر از راهنمایی . این relation ها خیلی مهم است . ای کاش آموزش ها کامل تر بود مثلا در مورد کلید های خارجی هم بحث می شد . ولی تا همین مقدار هم فوق العاده بود و از همه متشکرمRolleyes
2010/12/24 06:06 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
nimaboy آفلاین
عضو جدید
*

ارسال‌ها: 17
تاریخ عضویت: Nov 2010
رتبه: 0
تشکر: 0
10 بار تشکر شده در 4 پست
ارسال: #9
RE: توضیح درمورد Relationship
مباحث بسیار مهم پیرامون پایگاه داده شامل: ارتباطات کلید خارجی و ارتباطات تعریف شده و نشده و ...
در مقاله ای بسیار کامل و خوب پیدا کردم که امیدوارم مورد استفاده دوستان قرار بگیرد.

http://article.mjsoft.ir/Default.aspx?ID=53
(آخرین تغییر در این ارسال: 2010/12/24 07:03 PM توسط nimaboy.)
2010/12/24 07:02 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : Alir3z4 payamsp saleh alri aziminia
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: