- سهشنبه 7 فروردین 1397 ساعت 09:10
- 3.1.9
- در حال تکمیل
- فعال
مدلها در کدایگنایتر، کلاسهایی برای کار با دادهها هستند. در واقع این مدلها وظیفه دریافت داده از دیتابیس و تحویل آن به کنترلر را بر عهده دارند. مدلها، کلاسهای PHP هستند که برای کار با اطلاعات داخل دیتابیس طراحی شدهاند. برای مثال، اگر بخواهید با استفاده از کدایگنایتر یک وبلاگ را مدیریت کنید. احتمالا یک کلاس مدل برای عملیات CRUD در رابطه با مطالب وبلاگ دارید.مثال زیر یک کلاس مدل است:
class Blog_model extends CI_Model {
public $title;
public $content;
public $date;
public function get_last_ten_entries()
{
$query = $this->db->get('entries', 10);
return $query->result();
}
public function insert_entry()
{
$this->title = $_POST['title']; // please read the below note
$this->content = $_POST['content'];
$this->date = time();
$this->db->insert('entries', $this);
}
public function update_entry()
{
$this->title = $_POST['title'];
$this->content = $_POST['content'];
$this->date = time();
$this->db->update('entries', $this, array('id' => $_POST['id']));
}
}
$_POST
به صورت مستقیم استفاده شده است. به طور کلی، اصلا روش خوبی نیست و روش متداولتر استفاده از لایبرری input است $this->input->post('title')
.آناتومی مدل
کلاسهای مدل در دایرکتوری application/models/ ذخیره میشوند. مدلها نیز مانند کنترلرها و ویوها با استفاده از سابدایرکتوریها قابل سازماندهی هستند. پروتوتایپ (نمونه اولیه و پایهای) یک کلاس مدل به صورت زیر است:
class Model_name extends CI_Model {
}
نام کلاس به جز حرف اول باید تمام با حروف کوچک نوشته شود و اولین حرف با حرف بزرگ نوشته شود. کلاس مدل حتما باید از کلاس مدل پایه یعنی CI_Model
ارث ببرد. نام فایل حاوی کلاس مدل، باید همنام با نام کلاس باشد. برای مثال، در کلاس زیر:
class User_model extends CI_Model {
}
فایل حاوی این کلاس، فایل زیر است:
application/models/User_model.php
بارگذاری مدل
مدلها معمولا از داخل متدهای کنترلرها بارگذاری و فراخوانی میشوند. برای لود یک مدل از متد زیر استفاده میشود:
$this->load->model('model_name');
اگر مدل در یک سابدایرکتوری قرار داشته باشد، باید نام دایرکتوری نیز در کنار نام فایل نوشته شود. برای مثال، اگر مدل در application/models/blog/Queries.php قرار داشته باشد، به صورت زیر فراخوانی میشود:
$this->load->model('blog/queries');
هنگامی که مدل لود شد، با استفاده از آبجکتی همنام با نام مدل، میتوانید به متدهای مدل دسترسی داشته باشید:
$this->load->model('model_name');
$this->model_name->method();
اگر تمایل دارید تا مدل را به یک آبجکت با نامی متفاوت تخصیص دهید، هنگام لود مدل، نام مورد نظر را به عنوان پارامتر دوم استفاده کنید:
$this->load->model('model_name', 'foobar');
$this->foobar->method();
مثال زیر یک کنترلر است که یک مدل را لود کرده و سپس یک ویو را نمایش میدهد:
class Blog_controller extends CI_Controller {
public function blog()
{
$this->load->model('blog');
$data['query'] = $this->blog->get_last_ten_entries();
$this->load->view('blog', $data);
}
}
بارگذاری خودکار مدلها
اگر به یک مدل نیاز دارید تا در تمام اپلیکیشن به صورت خودکار لود شود، باید به کدایگنایتر بگویید تا در زمان آمادهسازی اولیه، آن را به صورت خودکار لود کند. برای اینکار فایل application/config/autoload.php را باز کنید و مدل را به آرایهی autoload
اضافه کنید.
اتصال به دیتابیس
وقتی یک مدل لود میشود، به صورت خودکار به دیتابیس متصل نمیشود.
- با استفاده از متدهای استاندارد دیتابیس، هم از داخل کلاس کنترلر و هم از داخل کلاس مدل میتوانید به دیتابیس متصل شوید.
- پارامتر سوم متد لود مدل را TRUE قرار دهید تا اتصال به دیتابیس به صورت خودکار در هنگام لود مدل فراخوانی شود. تنظیمات اتصال به دیتابیس، در فایل کانفیگ دیتابیس تعریف شده است.
$this->load->model('model_name', '', TRUE);
- میتوانید تنظیمات اتصال به دیتابیس را از طریق پارامتر سوم ارسال کنید:
$config['hostname'] = 'localhost';
$config['username'] = 'myusername';
$config['password'] = 'mypassword';
$config['database'] = 'mydatabase';
$config['dbdriver'] = 'mysqli';
$config['dbprefix'] = '';
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$this->load->model('model_name', '', $config);
سایر پستهای داکیومنت
- به کدایگنایتر خوش آمدید
- نصب
- بررسی اجمالی
- شروع به استفاده از کدایگنایتر
- کدایگنایتر در یک نگاه
- فیچرهای کدایگنایتر
- فلوچارت اپلیکیشن
- مدل ویو کنترلر
- اهداف طراحی و معماری
- خودآموز
- مشارکت در کدایگنایتر
- نوشتن مستندات کدایگنایتر در صف ترجمه
- گواهی مبدأ توسعه دهنده 1.1 در صف ترجمه
- مباحث کلی
- URLها در کدایگنایتر
- کنترلرها
- نامهای رزرو شده
- ویوها
- مدلها
- هلپرفانکشنها
- استفاده از لایبرریهای کدایگنایتر
- ساخت لایبرری
- استفاده از درایورهای کدایگنایتر
- ساخت درایور
- ساخت کلاسهای هسته سیستم
- ساخت کلاسهای کمکی
- هوکها - توسعه هسته فریمورک
- بارگذاری خودکار ریسورسها
- فانکشنهای عمومی
- فانکشنهای سازگاری
- مسیریابی URI
- هندل کردن خطاها
- کش کردن صفحات وب
- ارزیابی و تجزیه و تحلیل عملکرد اپلیکیشن
- اجرای کدایگنایتر به وسیله خط فرمان
- مدیریت چندین اپلیکیشن
- هندل کردن محیطهای چندگانه
- سینتکس جایگزین PHP برای فایلهای ویو
- Security در صف ترجمه
- راهنمای کدنویسی در PHP
- لایبرریها در صف ترجمه
- کلاس بنچمارک
- درایور کش در صف ترجمه
- Calendaring Class در صف ترجمه
- Shopping Cart Class در صف ترجمه
- Config Class در صف ترجمه
- Email Class در صف ترجمه
- Encrypt Class در صف ترجمه
- Encryption Library در صف ترجمه
- File Uploading Class در صف ترجمه
- Form Validation در صف ترجمه
- FTP Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Javascript Class در صف ترجمه
- کلاس زبان
- Loader Class در صف ترجمه
- کلاس مایگریشن
- Output Class در صف ترجمه
- Pagination Class در صف ترجمه
- Template Parser Class در صف ترجمه
- Security Class در صف ترجمه
- Session Library در صف ترجمه
- HTML Table Class در صف ترجمه
- Trackback Class در صف ترجمه
- کلاس تایپوگرافی در صف ترجمه
- Unit Testing Class در صف ترجمه
- URI Class در صف ترجمه
- User Agent Class در صف ترجمه
- XML-RPC and XML-RPC Server Classes در صف ترجمه
- کلاس انکود کردن آرشیو Zip در صف ترجمه
- رفرنس دیتابیس در صف ترجمه
- شروع سریع دیتابیس: کد نمونه
- پیکربندی دیتابیس در صف ترجمه
- Connecting to your Database در صف ترجمه
- Queries در صف ترجمه
- Generating Query Results در صف ترجمه
- Query Helper Methods در صف ترجمه
- Query Builder Class در صف ترجمه
- Transactions در صف ترجمه
- Database Metadata در صف ترجمه
- فراخوانی سفارشی فانکشن
- Database Caching Class در صف ترجمه
- Database Forge Class در صف ترجمه
- Database Utility Class در صف ترجمه
- DB Driver Reference در صف ترجمه
- هلپرفانکشنها
- هلپرفانکشن Array
- هلپرفانکشن CAPTCHA در صف ترجمه
- هلپرفانکشن Cookie
- Date Helper در صف ترجمه
- هلپرفانکشن Directory
- Download Helper در صف ترجمه
- Email Helper در صف ترجمه
- File Helper در صف ترجمه
- هلپرفانکشن Form در صف ترجمه
- HTML Helper در صف ترجمه
- Inflector Helper در صف ترجمه
- هلپرفانکشن Language
- هلپرفانکشن Number
- Path Helper در صف ترجمه
- Security Helper در صف ترجمه
- Smiley Helper در صف ترجمه
- هلپرفانکشن String
- Text Helper در صف ترجمه
- Typography Helper در صف ترجمه
- URL Helper در صف ترجمه
- XML Helper در صف ترجمه