تالار گفتمان nCIS.ir

نسخه‌ی کامل: model در yii
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
تمام کنترلر ها کلاس مدلشون به نام $model قابل دسترسیه؟
خیر. اگه دقت کنید ما خودمون یک شئ به اسم model$ از کلاس میسازیم (یا با new یا با find که خروجی اون، یک شئ از کلاس ActiveRecord هست). اگه اسم این متغیر رو چیز دیگری بگذاریم، اونوقت توی view هم با همون اسم باید کار کنیم.
(05-03-1394، 07:22 ب.ظ)ADMIN نوشته: [ -> ]خیر. اگه دقت کنید ما خودمون یک شئ به اسم model$ از کلاس میسازیم (یا با new یا با find که خروجی اون، یک شئ از کلاس ActiveRecord هست). اگه اسم این متغیر رو چیز دیگری بگذاریم، اونوقت توی view هم با همون اسم باید کار کنیم.
اینجور که فهمیدم تو کلاس مدل یه متد استاتیک به نام model  وجود داره که مقدار پیش فرضش نام اون کلاس مدل هست
که از CActiveRecord  مشتق شده و چک میکنه این کلاس لود شده یا نه و .... 
درسته ؟

برای دسترسی به activeRecorde  هر مدلی هم به شکل زیر عمل میشه 

issue->model()


بعد از نام مدل هم می شه متد مورد نظر رو صدا کرد درسته؟
اون متده نه model$ و برای پیاده سازی معماری Singleton بکار میره. درواقع شما با کمک Users::model() میتونید به شئ Singleton کلاس مدل Users دسترسی پیدا کنید. این با شئ model$ که میسازین خیلی فرق داره. این شئ، نماینده یک رکورد توی جدول دیتابیس هست.
(05-03-1394، 07:39 ب.ظ)ADMIN نوشته: [ -> ]اون متده نه model$ و برای پیاده سازی معماری Singleton بکار میره. درواقع شما با کمک Users::model() میتونید به شئ Singleton کلاس مدل Users دسترسی پیدا کنید. این با شئ model$ که میسازین خیلی فرق داره. این شئ، نماینده یک رکورد توی جدول دیتابیس هست.

من دقیقا منظورم این کده 
project::model()->findByPk(1)
این مدلی که اینجا نوشته شده  به شئ سینگلتون project اشاره میکنه ؟

اون $model هم متغیریه که ما در View بهش دسترسی داریم درسته؟
بله. وقتی میگیم:
$model = Projects::model()->findByPk(1);
در اینجا، با کمک متد ()model به شئ Singleton کلاس Projects دسترسی پیدا میکنیم و ازطریق اون، متد findByPk رو صدا میزنیم و پارامتر 1 رو بهش میدیم تا رکوردی که کلید اصلی اون مقدار 1 داره رو پیدا کنه و این رو توی متغیر model$ ذخیره میکنیم و به ویو میفرستیم.