PDA

View Full Version : مشکل در relation ها با جدول واسط



Tarragon
شنبه 28 تیر 1393, 22:42 عصر
با سلام
من می خوام با استفاده از جدوال واسط یه relation درست کنم.
اما کار نمی کنه .
نمی دونم مشکل از کجاست.
این کد قسمت relation در مدل مربوطه :
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(
'schedules' => array(self::HAS_MANY, 'Schedule', 'lesson_id'),
'teachers' => array(self::MANY_MANY, 'Teacher', 'lessonAssignment(lesson_id, teacher_id)'),
'teacherCount' => array(self::STAT, 'Teacher', 'lessonAssignment(lesson_id, teacher_id)'),
);
}
و اینم هم
دیتابیس مربوط به جدول واسط :
121298
‍‍پیشاپیش از جواب مفیدتون ممنونم.

tinybyte
یک شنبه 29 تیر 1393, 08:28 صبح
شما اگه كليد هاي خارجي را در mysql درست تعريف كنيد، خود gii راحت ترين ابزار براي درست كردن ريليشن هست.
با gii يك preview از مدل بگيريد و فقط قسمت ريليشن را كپي كنيد.

Tarragon
یک شنبه 29 تیر 1393, 18:48 عصر
بهرحال این راه استاندارد نیست!
من می خوام بدونم مشکلم از کجاست!

Tarragon
یک شنبه 29 تیر 1393, 18:49 عصر
بهرحال این راه استاندارد نیست!
من می خوام بدونم مشکلم از کجاست!
و در عین حال یه جودل واسط هستش و رابطه n....n هستش.
پس فکر نمی کنم gii بتونه این relation ها رو تشخصی بده.

tinybyte
دوشنبه 30 تیر 1393, 11:23 صبح
بهرحال این راه استاندارد نیست!
من می خوام بدونم مشکلم از کجاست!
و در عین حال یه جودل واسط هستش و رابطه n....n هستش.
پس فکر نمی کنم gii بتونه این relation ها رو تشخصی بده.

اتفاقا خيلي هم استاندارده و خيلي هم هوشمند!
Yii اين ابزار ها را گذاشته كه كار برنامه نويسي راحت تر بشه

Tarragon
دوشنبه 30 تیر 1393, 13:27 عصر
من این پروژه رو برای یادگیری انجام می دم پس باید خودم یاد بگیرم.
در ضمن گفتم که این از جدول واسط استفاده کرده و gii نتونست relation رو بسازه.

tinybyte
دوشنبه 30 تیر 1393, 13:40 عصر
جدول مياني را اينطوري كه من مي گم تغيير بده
1 - primary key را از روي اون دو تا فيلد خارجي بردار
2 - يك ستون ديگه اضافه كن و آن را هم primary كن هم auto increament
3 - مطمئن شو كه در ريليشن جدولت، دوتا فيلد كليد خارجي به جدول هاي مربوطه به درستي اشاره مي كنن

الان ديگه بايد gii بتونه ريليشن را پيدا كنه

Tarragon
دوشنبه 30 تیر 1393, 17:18 عصر
دوتاشون primary هستن و foreign key مربوطه رو ساختم.
نیازی به ایدی هم نداره چون یه چیزه اضافه هست وقتی بهش نیازی نداریم.
کسی دیگه ای نمی دونه؟

MMSHFE
چهارشنبه 01 مرداد 1393, 09:19 صبح
Gii به راحتی ارتباط n...n رو تشخیص میده. اگه متوجه نشده یعنی قطعاً ساختار relationهای شما مشکل داره. توی پیام خصوصی تیم ویور بدین تا چک کنم.

Tarragon
چهارشنبه 01 مرداد 1393, 17:04 عصر
سلام
مسٔله اصلی من اینه که جدول واسط هستش.
چرا شما تو ایجاد ارتباط بین issue ها و project ها خودتون relation رو نوشتید؟
ممنونم.

MMSHFE
چهارشنبه 01 مرداد 1393, 17:57 عصر
خوب جدول واسط باشه. من هم تو پکیج از جدول واسط استفاده کرده بودم. چون مدل project رو قبلاً ساخته بودم و نمیخواستم دوباره Gii کد رو کامل از اول بنویسه چون یکسری متدها اضافه کردم بودم که از بین میرفت. اگه دقت کنید میبینید که توی مدل Issue خود Gii متد relations رو نوشته بود و من فقط توی project اضافه کردم.