خب بریم سراغ شروع برنامه نویسی توی CI
اول از همه میخوایم به دیتابیس وصل بشیم. برای وصل کردن app به دیتابیس باید بریم توی قسمت
App+ Config+ Database
و توی public $default و تنظیمات دیتابیس خود را وارد کنیم
مثل hostname, username , password, database
خب برای شروع کدنویسی اول باید توی پوشه ی controller و یک فایل php درست میکنیم. اسم فایل و اسم کلاس ما هر دو باید یکی باشد. این اسم در واقع اسم controller ماست (من به اسم users درستش کردم.) دقت کنید که هر اسمی که انتخاب کنیم توی url ما بعنوان اولین آرگومان می آید.( جلسه ی پیش راجع بهش توضیح دادم)
توی فایل php بالای کدها باید namespace رو مشخص کنیم
namespace App\Controllers;
هر controller که درست میکنیم باید کلاس BaseController هم بهش extends کنیم تا بتوانیم از متدها و property های controller استفاده کنیم.
از اونجایی که برای کار با دیتابیس به model نیاز داریم وارد پوشه ی model شده و فایل php با اسم مورد نظر( من user انتخاب کردم) درست میکنیم و مانند controller باید namespace بنویسیم. چونکه باید کلاس model رو به modelمون extends کنیم :
use CodeIgniter\Model;
رو بالای صفحه مینویسیم.
وقتی که یک کلاس model رو تازه درست میکنیم یا باید تنظیمات مربوط به دیتابیس رو توش وارد کنیم یا بگیم که به تنظیمات پیش فرض( که توی app + config + database ) است برود.
برای این که به تنظیمات پیشفرض برود یک property درست میکنیم که به حالت پیش فرض برود
protected $DBGroup = 'default';
چرا default ؟ چون توی پوشه ی app + config + database اسم آرایه مربوط به تنظیمات دیتابیس default بود. ( عکس شماره 1)
کلاس model تعدادی property برای تنظیمات اولیه داره و ما هرجا که نیاز داشتیم از این property ها استفاده میکنیم. عکس زیر:
همینطور که میبینید $table را برابر users ( یکی از جدولهای ما در دیتابیس) قرار دادیم و primaryKey کلید اصلی رو مشخص میکنه( اگه کلید ما id هست لازم نیست بنویسیم). allowedfields$ همونطور که از اسمش پیداست یعنی این فیلدا اجازه ی پر شدن و اضافه کردن اطلاعات دارند. $db رو خودمون تعیین میکنیم که اتصال به دیتابیس رو توی این متغیر بریزیم.
برای اتصال به دیتابیس توی model از method construct استفاده میکنیم و کد اتصال به دیتابیس را مینویسیم.
$this->db= \Config\Database::connect();
خب بریم سر اصل مطب:
توی controller یک متد درست میکنیم با هر اسمی مثلا index. فرض کنید این متد میخواهد که اطلاعات تمام کاربرها رو از دیتابیس بگیرد.
اول بصورت public یک property بنام مثلا userدرست میکنیم که مدل رو توی اون بریزیم. چون میخوایم از دیتابیس اطلاعات رو بگیریم پس باید از model استفاده کنیم. اول model رو لود کنیم. برای این کار از helper function بنام model استفاده میکنیم.
به این صورت
public $user;
و بعد متد index را مینویسیم.
public function index(){
$this->user = model('user');
$this ->user->getUsers();
}
توی متد construct در model مینویسیم
$this->builder=$this->db->table('users');
و به table بنام users در دیتابیسمون دسترسی داریم. یک متد درست میکنیم توی model به اسم مثلا getUsers و توش کد زیر رو مینویسیم
public function getUsers (){
$query=$this->builder->get();
return $query->getResult();
}
از طریق متد get تمام اطلاعات usersرو میگیریم و با استفاده از getResult همش رو برمیگردونیم به Controller.
همونطور که میبینید من model رو توی متد construct لود کردم. چون توی متدهای دیگه هم میخوام ازش استفاده کنم. اگه توی construct ننویسیم باید همین کد رو توی هر متد تکرار کنیم که کار جالبی نیست. پس همون بالا توی construct مینویسیم و توی کل controller بهش دسترسی داریم.
خب پس تا اینجا یاد گرفتیم که چجوری اطلاعات رو از دیتابیس بگیریم.
توی پست بعدی بیشتر روش کار میکنیم.
یادتون نره که تا اینجا رو حتما تمرین کنید تا خوب یاد بگیرید.