# زبان های اسکریپتی > PHP > Yii Framework >  سوال در ارتباط با نحوه کد نویسی برا ی جداول میان رابطه ای

## jionelmessi

باسلام
بنظر دوستان و استید بهتره برا ی این جداول ما یه اکتیو رکور بسازیم یا نه با command bulder  و. ساخت یکسری متندها اینکارارو انجام بدیم؟
کدوم استاندارد تره

----------


## MMSHFE

تا جایی که بشه بهتره از امکانات فریمورک مثل Relational AR استفاده کنید مگه اینکه مطمئن بشین داره به Performance آسیب میزنه. من خودم در اکثر جاها با همین اکتیورکورد کار میکنم. حتی در جاهایی که پرفورمنس داره خراب میشه هم میشه از این جدولهای واسطه استفاده مفید کرد. مثلاً من میام خودم توی مدلهای اصلی relationهای جدول واسط رو هم از نوع HAS_MANY تعریف میکنم و بعد با کمک اونها رکوردها رو استخراج میکنم. برای مثال این کد رو ببینید:
$photos = Photos::model()->findAll('confirmed=1');
foreach($photos as $photo) {
    // ...
    foreach($photo->tags as $tag) {
        if($tag->confirmed) {
            // ...
        }
    }
}
خوب ممکنه فرضاً تعداد زیادی از رکوردها confirmed با مقدار 0 داشته باشن و درنتیجه Performance داره با این روش پایین میاد. اینجا من میام این شکلی کار میکنم:
$photos = Photos::model()->with('tags'=>array(
    'condition'=>'tags.confirmed=1',
))->findAll('t.confirmed=1');
foreach($photos as $photo) {
    // ...
    foreach($photo->tags as $tag) {
        // ...
    }
}
اینجا همون اول تگهایی که confirmed اونها 0 هست توی حافظه نمیان (مصرف کمتر حافظه) و دیگه نیاز به if نداریم (پردازش سبکتر)

----------


## jionelmessi

خودمم active record بیشتر ترجیح مدم چون اونجوری باس متد های مختلفی بنویسیم تا استخراجای متفاوت کنه ممنون

----------


## jafaripur

طی تجربه خودم اصلاً نمی شه گفت کدوم بهتره. هر کدوم جای خودش را داره. به عنوان مثال برای کوئری های پیچیده Geolocating نمی شه از ORM استفاده کرد.

----------

