سلام دوست عزیز
CRUD یه چیزی شبیه Linq در .net هستش، در دات نت هم برای اینکه بتونیم به فیلدهای جداول بانک داده دسترسی داشته باشیم و علم "شی گرایی" رو هم در آنجا داشته باشیم و جداول رو در غالب شی و فیلد ها رو در قالب خصوصیات ببینیم، از linq استفاده میکردیم، در yii هم برای این امر از CActiveRecord ها استفاده می کنیم، که اگر از ابزار Gii برای ساخت CRUD استفاده کنیم خود Gii رابطه ها رو تشخیص میده و موقع generate کلاس ها این قوانین رو در قالب تابع relations در نظر میگیره به این خطوطی که gii تولید کرده توجه کن:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'coCollege' => array(self::BELONGS_TO, 'College', 'CoCollege'),
'classrooms' => array(self::HAS_MANY, 'Classroom', 'CoBuilding'),
);
}
این جدول با جداول Classroom و College رابطه ی یک به چندی و ... دارد.
Join یا هر چیز دیگه محدودیت در کار ایجاد نمیکنه.
من(نظر شخصی) برای کارهایی که زیاد به Join و ... ختم میشه از Store Procedure استفاده می کنم و تراکنش رو به SP میدم تا به برنامه نویسی PHP.