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

ارتباط جداولی که ارتباط چند به چند دارند Many_Many

#1 User is offline   Shahcheraghean 

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

Posted 26 October 2013 - 11:38 AM


با سلام. بنده چند جدول دارم که با یک جدول دارای ارتباط چند به چند است. در این بین یک جدول واسط برای قراردادن id های مرتبط باهم به نام form_send را در نظر گفته ام. فیلد های این جداول به این صورت است:

forms
id
...

form_send
form_id
send_type
send_id

internet
id
...
که جدول فرم با جدول اینترنت از طریق جدول form_send با هم دارای ارتباط چند به چند هستند. جدول form_send دارای فیلدی به نام send_type است که دارای سه مقدار ۱و۲و۳ که هر کدام تعیین کننده نوع ارسال که شامل اینترنت، آندروید و ایمیل که هرکدام دارای جدول جاگانه ای می باشد، میشه.
در نهایت سوال:
ارتباط این جداول با توجه به فیلد نوع ارسال و به صورت چند به چند چطوری باید پیاده سازی بشه؟

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

#2 User is offline   nima_naraghi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 61
  • Joined: 15-March 13
  • Location:Iran, Tehran

Posted 09 November 2013 - 01:55 PM

در مدل یکی از دو جدول اصلی یک متد بساز تا مقادیر لازم را وارد جدول واسط کنن، این کارو بهتره با نوشتن کوئری به صورت دستی انجام بدی.
برای بروز کردن جدول واسط هم نیاز خواهی داشت ابتدا همه رابطه های مورد نظر را پاک کنی و دوباره مقادیرو انزرت کنی
احتمالا بهتره این متد را در مدل
forms
بنویسی تا وقتی یک رکورد ازش تولید میشه یک رابطه هم در جدول واسط با
internet
کنه

متد ایجاد رابطه ات شبیه اینه

public function assignInternet($send_Id, $sendType)
	{
		$command = Yii::app()->db->createCommand();
		$command->insert('form_send', array(
		'sendType'=>$sendType,
		'send_id'=>$send_Id,
		'form_id'=>$this->id,
		));
	}


در کنترلر
formsController
هم شبیه این میتونی بنویسی


public function actionCreate()
	{
		$model=new forms;

		
		if(isset($_POST['Forms']))
		{
			$model->attributes=$_POST['Forms'];
			//load internet model here
			if($model->save())
			{
				$model->assignInternet($internetModel->id,$this->getSendTypeOption(email));

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