ورود

View Full Version : select تو در تو



minanazari
دوشنبه 08 تیر 1394, 11:26 صبح
سلام و خسته نباشید
من 2 تا جدول دارم که بین آنها ارتباط وجود دارد . در حال حاضر من از این روش برای بدست آوردن اطلاعات استفاده کردم:

$category=Category::model()->findAll();



foreach($category as $i){ $Link = Link::model()->findAll( array('condition'=>'category_id = :id', 'params'=>array(':id' => $a)); foreach($link as $j) {} }

می دونم که این راه حل درستی نیست و اشتباه است اما نمیدونم از چه روشی باید استفاده کرد .
امیدوارم واضح توضیح داده باشم ممنون می شم اگه راهنماییم کنید؟

under22
دوشنبه 08 تیر 1394, 17:06 عصر
لطفا کد هاتون رو به شکل درست نمایش بدید تا بتونیم راحت ببینیم و اینکه دقیقا می خواهید چیکار کنید چون این foreach به این شکل درست نیست

minanazari
سه شنبه 09 تیر 1394, 08:56 صبح
دو نا جدول دارم به اسم category و subcategory که ستون id جدول category با ستون category_id جدول subcategory ارتباط داره من می خوام توی یک صفحه برای هر category چاپ شده subcategory مربوطه را زیرش نمایش بده
به خاطر همین تمام رکوردها را از جدول category با کد زیر select کردم :

$category=Category::model()->findAll();

foreach($category as $i){

$Link = Link::model()->findAll( array(

'condition'=>'category_id = :id', 'params'=>array(

':id' => $a));

foreach($link as $j)

{ }


بعد با یک foreach گفتم به ازای هر رکورد خوانده شده بره توی SUBCATEGORY ستون category_id مساوی با id مربوطه را پیدا کنه ولی می دونم این راه حل درستی نیست .


ممنون از راهنماییتون

under22
سه شنبه 09 تیر 1394, 11:54 صبح
شما باید از join استفاده کنی به این شکل که با یک کوئری تمام category ها رو با subcategory ها واکشی کنید یعد داخل foreach بندازید به این شکل


$category=Category::model()->with('subcategory')->findAll();
foreach($category as $i){
$catName = $i->name;
$subcategoryName = $i->subcategory->name;
}



subcategory نام ریلیشن شما داخل مدل category هست . داخل foeach چون به ازای یک category چند تا subcategory وجود داره خود subcategory داخل foreach نیاز به یک forach دیگه داره