PDA

View Full Version : اصول mvc (حل شد)



beh3000
یک شنبه 16 آذر 1393, 11:07 صبح
سلام

من توی پروژه ام دارم به روش DAO با دیتابیس ارتباط برقرار میکنم و کوئری هام همشون DAO هست ... و به این شکل که داخل کنترلر کوئری هام رو مینویسم و execute میکنم ... یعنی کار با دیتابیس داخل کنترلر هست ... با این کارم اصل mvc رو توی Yii نقض کردم ؟؟؟

شما دوستان به چه شکلی مینویسین ؟ ( با استفاده از DAO )

MMSHFE
یک شنبه 16 آذر 1393, 13:28 عصر
برای اینکه هم با DAO کار کنید و هم اصول MVC رو نقض نکنید، برای خودتون مدل طراحی کنید (توی پوشه models) و لازم نیست با ActiveRecord کار کنید. کوئریها رو توی مدل خودتون توی متدهای مربوطه بگذارین و توی کنترلر از مدل بخواین با دیتابیس کار کنه.

Mohammadsgh
یک شنبه 16 آذر 1393, 22:03 عصر
سلام

من توی پروژه ام دارم به روش DAO با دیتابیس ارتباط برقرار میکنم و کوئری هام همشون DAO هست ... و به این شکل که داخل کنترلر کوئری هام رو مینویسم و execute میکنم ... یعنی کار با دیتابیس داخل کنترلر هست ... با این کارم اصل mvc رو توی Yii نقض کردم ؟؟؟

شما دوستان به چه شکلی مینویسین ؟ ( با استفاده از DAO )
ما با active record و cformmodel مینویسیم.مگه این دو نیاز شما رو برآورده نمیکنه؟

beh3000
دوشنبه 17 آذر 1393, 08:16 صبح
برآورده میکنه ولی active record کندتره و حافضه بیشتری مصرف میکنه ... بستگی به برنامه داره اگه وقت داشته باشم ترجیح میدم با DAO خودم کوئری بنویسم ... تازه با Active record فکر میکنم بعضی از کوئری های پیچیده رو نمیشه نوشت

MMSHFE
دوشنبه 17 آذر 1393, 08:29 صبح
خوب هرجا با ActiveRecord نمیشه با Yii::app()->db->commandBuilder کار کنید.

MMSHFE
دوشنبه 17 آذر 1393, 10:03 صبح
با CDbCriteria هم میتونید کوئریهای خیلی پیچیده رو به راحتی ایجاد کنید.

beh3000
دوشنبه 17 آذر 1393, 20:55 عصر
شرمنده اینو میپرسم ... ولی اگه خودم بخوام مدل درست کنم از چه کلاسی باید مشتق بشه فرم که نیست CFormModel باشه اکتیو رکورد هم که نیست !

نمونه مینویسید برام ؟

MMSHFE
سه شنبه 18 آذر 1393, 13:12 عصر
نیازی نیست از کلاس خاصی مشتق کنید. کافیه اسم فایل همنام با اسم کلاس باشه و تو پوشه models بگذارین تا Autoload فریمورک Yii اون رو بشناسه. اما اگه خواستین حتماً مشتق کنید، از کلاس اصلی مدل یعنی CModel میتونید مشتق کنید.