Yii Framework Forum: تعریف رابطه ها - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

تعریف رابطه ها

#1 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 26 November 2013 - 12:52 PM

با سلام
من در فهم رابطه ها در اکتیورکورد دچار مشکل هستم و نمیتونم بفهمم باید چیکار کنم.
من خیلی تلاش کردم اما توی رابطه ها با توضیحات گنگی مه تا حالا خوندم نتونستم مشکلم را حل کنم.
الان من یک دیتا بیس دارم با 4 جدول
یک- جدول کاربرها
دو- جدول پستها
سه- جدول دسته ها
چهار- جدول رابطه پستها با دسته ها که در اون آیدی پست و دسته هایی که اون پست متعلق به اون هست ذخیره میشه

حالا من میخوام پستهایی که متعلق به یک دسته خاص هست رو واکشی کنم.
با توجه به اینکه جدولی که به ما نشون میده که هر پست چه دسته هایی داره یک جدول جدا هست چطور میتونم با تعریف رابطه ها اینکارو بکنم؟

0

#2 User is offline   ahb360 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 15-February 10

Posted 26 November 2013 - 01:41 PM

در راهنمایی که هم توی سایت هست و هم پی دی افشو میتونید دانلود کنید اطلاعات خوبی هست. به آدرس زیر مراجعه کنید
http://www.yiiframew...ng-relationship

خیلی ساده به شکل زیر میتونید رابطه‌ها رو تعریف کنید

در مدل Category باید رابطه را به شکل زیر تعریف کنید

public function relations() 	{     	
return array(         	
 'posts'=>array(self::MANY_MANY, 'Post',  'tbl_post_category(category_id, post_id)'),     	
); 	}


در مدل Post هم به شکل زیر
public function relations() 	{     	
return array(         	
 'categories'=>array(self::MANY_MANY, 'Category', 'tbl_post_category(category_id, post_id)'),    	
 ); 	}


حالا اگر فرض کنیم شما یک آبجکت از یک دسته خاص داشته باشید به شکل زیر میتونید پست‌های اون رو دریافت کنید

$category = Category::model()->findByPk($cat_id);
$posts = $category->posts;

1

#3 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 26 November 2013 - 02:33 PM

نشد داداش ! خطا میده..
0

#4 User is offline   ahb360 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 15-February 10

Posted 26 November 2013 - 02:50 PM

کدی که توی مدل‌ها نوشتی و کد کنترلر رو و خطایی که میده رو اینجا پست کن ببینیم چی هست
0

#5 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 26 November 2013 - 10:02 PM

View Postahb360, on 26 November 2013 - 02:50 PM, said:

کدی که توی مدل‌ها نوشتی و کد کنترلر رو و خطایی که میده رو اینجا پست کن ببینیم چی هست


این کد مربوط به مدل آیدی پستها و دسته ها هست:
'posts'=>array(self::MANY_MANY, 'FunPosts',  'cats_relation(cat_id, post_id)'),


این هم کد مدل پستها هست

'categories'=>array(self::MANY_MANY, 'CatsRelation',  'cats_relation(cat_id, post_id)'),


این هم کدی هست که پستها رو باید بخونه:

$model = FunPosts::model()->with('categories')->findAll("cat_id=2");
foreach($model as $model){
    echo $model->id."<br>";
    echo $model->persian_write."<br>";
    echo $model->latin_write."<br>";
    echo $model->significance."<br>";
    echo "-----------<br>";
}


کد بالا رو در حالتهای دیگه مثل زیر هم تست کردم:
$model = FunPosts::model()->with('categories')->findByPk(2);
foreach($model as $model){
    echo $model->id."<br>";
    echo $model->persian_write."<br>";
    echo $model->latin_write."<br>";
    echo $model->significance."<br>";
    echo "-----------<br>";
}


اصن قاطی کردم یه وضی !

0

#6 User is offline   Shahcheraghean 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 12-December 12
  • Location:Mashhad, IRAN

Posted 27 November 2013 - 01:19 AM

ببینید خودفریمورک ابزاری دارد به نام Gii که خیلی راحت و با استفاده از آن خودش برای شما مدل را به همراه تمامی رابطه ها و کنترلر را به همراه تمامی بخش های مورد نیاز برای خواندن و نوشتن و حذفو به روز رسانی از بانک را تولید می کند. به سایت زیر یه نکاهی بندازید کمکتون می کنه:


http://shgn.ir/%DB%8...DB%B5-crud-gii/

همچنین برای کوئری گرفتن از آنها هم اینجا را یه نگاهی بندازید:

http://shgn.ir/%DA%A...%B1-yii-querys/
اگر مشکلی بود بفرمایید تا بررسی کنیم;)

www.shgn.ir
www.shgn.ir/yii-framework/
yii2.swsco.ir
In a world without any fences or walls,Who needs Gates or Windows!
0

#7 User is offline   ahb360 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 15-February 10

Posted 27 November 2013 - 01:36 AM

توضیحاتی که توی وبلاگ آقای شاهچراغیان هست کامل و خوبه
فقط یک نکته: اگر انجینه تیبل‌های شما وقتی از mysql استفاده می‌کنید
innodb نباشه gii رابطه ‌ها رو به صورت اتوماتیک نمیسازه

1

#8 User is offline   Shahcheraghean 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 12-December 12
  • Location:Mashhad, IRAN

Posted 27 November 2013 - 02:05 AM

ممون نکته ظریفی بود.
جسارت نباشه ولی می خواهم خواهش کنم که وقتی نوشته هایتان را فارسی می نویسید از ابزار های بالا راست به چپش کنید که خواناتر باشه.Posted Image


View Postahb360, on 27 November 2013 - 01:36 AM, said:

توضیحاتی که توی وبلاگ آقای شاهچراغیان هست کامل و خوبه
فقط یک نکته: اگر انجینه تیبل‌های شما وقتی از mysql استفاده می‌کنید
innodb نباشه gii رابطه ‌ها رو به صورت اتوماتیک نمیسازه


www.shgn.ir
www.shgn.ir/yii-framework/
yii2.swsco.ir
In a world without any fences or walls,Who needs Gates or Windows!
0

#9 User is offline   ahb360 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 15-February 10

Posted 27 November 2013 - 02:09 AM

به روی چشم

View PostShahcheraghean, on 27 November 2013 - 02:05 AM, said:

ممون نکته ظریفی بود.
جسارت نباشه ولی می خواهم خواهش کنم که وقتی نوشته هایتان را فارسی می نویسید از ابزار های بالا راست به چپش کنید که خواناتر باشه.Posted Image




0

#10 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 27 November 2013 - 01:40 PM

با سلام به همه و ممنون به خاطر نظرات. من ظاهرا در درک مفهوم رابطه ها توی یی دچار بد فهمی شدم. امروز صبح توی محل کارم برداشتم جداول و مدلهایی طبق مثال مستندات یی ساختم. با این کار رابطه ها رو تونستم مشاهده کنم و برام ملموس بشه. الان فکر میکنم تا نیمه راه مفهومش رو درک کردم. ولی یه سوالاتی دارم که تا یه ساعت دیگه میپرسم
0

#11 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 29 November 2013 - 02:31 AM

ممنون از همه دوستان. من از رابطه ها سر در آوردم :دی به نظرم کسانی که مثل من در یی تازه کار هستند بهتره اول مثالهای خود یی رو تمرین کنند. من چون از تیبل های خودم استفاده میکردم توی ربط دادن رابطه ها به هم گیج شده بودم :دی از پاسخ های دوستان هم ممنون اونها هم روشنگری داشتن توی درکم.
1

#12 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 29 November 2013 - 08:36 AM

من مشکلم با اصل رابطه ها حل شد ! ولی ازونجایی که سوالات تمومی نداره ! میخواستم تاپیک رو ادامه بدم. من الان کدی به صورت زیر دارم:
    $cat = Cats::model()->find ("latin_title='news'");
    echo "موضوع: ".$cat->title.": <br>";
    $catsRelations = $cat->cats_posts_relations;
    foreach($catsRelations as $catsRelation){
        $post = Posts::model()->findByPk($catsRelation->post_id);
        echo $post->title."<br>";
    }


در مدل کتز یا دسته ها هم رابطه زیر رو دارم:

      'cats_posts_relations' => array(self::HAS_MANY, 'CatsRelation', array('cat_id'=>'id')),


خروجی کدهای بالا میشه:

موضوع:اخبار:
خبر اول
خبر دوم
خبر اول از ایران
خبر اول از جهان
خبر دوم از ایران

کاری که کردم اینه: از مدل کتز موضوعی که عنوان لاتینش نیوز هست را خوندم. بعد به رابطه مراجعه کردم و آیدی پستهایی که مربوط به اون موضوع بودن را استخراج کردم و بعد عنوان اون پستها رو نمایش دادم.

هدف جدید اینه: چطور میتونم پستهای چند موضوع رو به صورت همزمان فراخوانی کنم. مثلا طوری که از اخبار فقط اخبار ایران و جهان رو نمایش بدم و خروجی اینطوری بشه:

موضوع:اخبار ایران , اخبار جهان:
خبر اول از ایران
خبر اول از جهان
خبر دوم از ایران


پی نوشت: با کدهای پی اچ پی و دستورات تقریبا تو در تو میتونم به هدفم برسم اما میخوام راه منطقی و درستش رو داخل فریم ورک یی بدونم

0

#13 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 29 November 2013 - 09:04 AM

لطفا راهنماییم کنید زودتر! ثواب داره. هفته بعد امتحان دارم !
0

#14 User is offline   Shahcheraghean 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 12-December 12
  • Location:Mashhad, IRAN

Posted 29 November 2013 - 10:21 AM


جداول و روابط شون را بزارید تا بشه بررسی اش کرد



www.shgn.ir
www.shgn.ir/yii-framework/
yii2.swsco.ir
In a world without any fences or walls,Who needs Gates or Windows!
0

#15 User is offline   R.C 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 26-November 13
  • Location:Iran

Posted 03 December 2013 - 02:01 AM

من در اول نوشتم توضیحاتی دادم که جدول و رابطه اون رو با جدولی که مد نظرم بود رو گفتم..
0

#16 User is offline   Nabi 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 208
  • Joined: 22-February 12
  • Location:Ahwaz

Posted 08 December 2013 - 09:02 PM


View Postahb360, on 27 November 2013 - 01:36 AM, said:

اگر انجینه تیبل‌های شما وقتی از mysql استفاده می‌کنید
innodb نباشه gii رابطه ‌ها رو به صورت اتوماتیک نمیسازه


برای اینکار تنها کافیست ریلیشن های مورد نیاز رو در comment های table بنویسید! یکمی مسخرس! ولی این راه حلیه که yii برای پوشش دادن موضوع ساخت خودکار relation ها در انجین MyISAM توسط gii اختراع کرده ;)

برای مثال این کد:

CREATE TABLE Foo
(
  id INTEGER NOT NULL PRIMARY KEY
);
CREATE TABLE bar
(
  id INTEGER NOT NULL PRIMARY KEY,
  fooID INTEGER
 	COMMENT 'CONSTRAINT FOREIGN KEY (fooID) REFERENCES Foo(id)'
);


http://www.yiiframew...en/database.arr



وقتی پیغام میذارید، بی زحمت متنتون رو انتخاب کنید و این دو تا کار ناقابل رو هم انجام بدید:
1. از اون بالا RTL رو انتخاب کنید.
2. فونت رو هم Tahoma بگذارید.
که چشمون در نیاد.
دمت گرم!

www.IranPHP.ir
1

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users