[font="Tahoma"][rtl]سوال بنده اينه، مثلا شما يه جدول داري post با فيلد هاي id, title, content بعد يه جدول ديگه داريم به نام category با فيلد هاي. id, name يه جدول ديگه داريم به نام post_category كه دو تا فيلد داره post_id, category_id و واسه تکمیل بودن یه جدول دیگه داریم به نام post_meta که فیلداش id, post_id, meta هست.
کد relation ها هم پایین نوشتم :[/rtl][/font]
//Post.php Model
public function relations()
{
return array(
'categories' => array(self::MANY_MANY, 'Category', 'post_category(post_id, category_id)'),
'metas' => array(self::HAS_MANY, 'PostMeta', 'post_id'),
);
}
//Category.php Model
public function relations()
{
return array(
'posts' => array(self::MANY_MANY, 'Post', 'post_category(category_id, post_id)'),
);
}
//PostMeta.php Model
public function relations()
{
return array(
'post' => array(self::BELONGS_TO, 'Post', 'post_id'),
);
}
[font="Tahoma"][rtl]حالا ما میام یک controller به صورت زیر تعریف می کنیم[/rtl][/font]
class PostController extends Controller
{
///****code
public function actionCreate()
{
$post = new Post;
$meta = new PostMeta;
$meta->info = 'test';
$post->title = 'hello world';
$post->content = 'hello world content';
$post->metas = $meta;
$post->categories = array(Category::model()->findByPk(1));
$post->save(false);
}
///****code
}
[font="Tahoma"][rtl]ولی خوب کد بالا فقط یه Post جدید به به جدول post اضافه می کنه حتی اگه post->categories و post->metas مقدار دهی شده باشه بقیه مدل ها رو فراخوانی نمیکنه که اونا هم تو یه دستور همراه با Post جدید تو جدول مخصوص به خودشون save بشن. یه کار میشه کرد اونم اینه که ولی تو رابطه Many-Many جواب نمیده.[/rtl][/font]
class PostController extends Controller
{
///****code
public function actionCreate()
{
$post = new Post;
$meta = new PostMeta;
$meta->info = 'test';
$post->title = 'hello world';
$post->content = 'hello world content';
$post->metas = $meta;
$post->categories = array(Category::model()->findByPk(1));
if($post->save(false)) {
$meta->post_id = $post_id;
$meta->save();
}
}
///****code
}
[font=“Tahoma”][rtl]که خوب این خوب نیست دیگه Cake اینکارو یه دفعه باهم انجام میده، رو دمم مونده چرا yii انجام نمیده!!
پ.ن : در ضمن extention و behavior معرفي نكنيد يا اگه مي كنيد خودتون خوب باهاش كار كرده باشيد، كه تو update و save و validation درست كار كنه من esaverelation وwithrelationbehavior رو كار كردم نقص داشتن[/rtl][/font]