مدلها (Models) مسئول ارتباط با دیتابیس در فریمورک فلر هستند. مدلها دادهها را از دیتابیس خوانده و برای استفاده در برنامه آماده میکنند. در این بخش، ما نحوه تعریف، فراخوانی و استفاده از مدلها را در فریمورک فلر توضیح خواهیم داد.
مدلها معمولاً یک کلاس هستند که با یک جدول در دیتابیس مرتبط هستند. در اینجا، نمونهای از یک مدل ساده برای جدول users
آورده شده است:
namespace Models;
use MysqliDb;
class UsersModel {
protected static $tableName = 'users';
public $id;
public $name;
public $email;
public $password;
public $token;
public $photo;
public $created_at;
public $updated_at;
protected $db;
public function __construct()
{
global $db;
$this->db = $db;
}
}
در این مثال، مدل UsersModel
با جدول users
در دیتابیس مرتبط است و ویژگیها و متدهایی برای تعامل با این جدول دارد.
برای جستجو در دیتابیس و دریافت رکوردها، میتوانیم از متدهایی مانند findByEmail()
و find()
استفاده کنیم. در اینجا نحوه استفاده از این متدها را مشاهده میکنید:
public static function findByEmail($email)
{
global $db;
$db->where('email', $email);
$result = $db->getOne(self::$tableName);
return $result ? self::instantiate($result) : null;
}
متد findByEmail()
یک رکورد با استفاده از ایمیل جستجو میکند و آن را به شیء مدل تبدیل میکند.
متد save()
برای ذخیره و بهروزرسانی رکوردها در دیتابیس استفاده میشود. اگر شیء مدل دارای شناسه باشد، رکورد موجود بهروزرسانی میشود؛ در غیر این صورت، یک رکورد جدید درج میشود. در اینجا نمونهای از نحوه استفاده از این متد آورده شده است:
public function save()
{
$data = [
'name' => $this->name,
'email' => $this->email,
'password' => $this->password,
'token' => $this->token,
'photo' => $this->photo,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
if ($this->id) {
// Update
$this->db->where('id', $this->id);
return $this->db->update(self::$tableName, $data);
} else {
// Insert
$id = $this->db->insert(self::$tableName, $data);
if ($id) {
$this->id = $id;
return true;
}
return false;
}
}
اگر شناسه موجود باشد، رکورد بهروزرسانی میشود، در غیر این صورت رکورد جدید درج میشود.
برای ساخت شیء مدل از دادههای یک رکورد، میتوانیم از متد instantiate()
استفاده کنیم. این متد دادهها را استخراج کرده و شیء مدل را میسازد:
protected static function instantiate($record)
{
$object = new self;
foreach ($record as $attribute => $value) {
if (property_exists($object, $attribute)) {
$object->$attribute = $value;
}
}
return $object;
}
در این متد، دادههای رکورد به ویژگیهای شیء مدل اختصاص مییابند.
مدلها در فریمورک فلر از عملیات CRUD (ایجاد، خواندن، بهروزرسانی، حذف) پشتیبانی میکنند. در اینجا، نحوه انجام این عملیاتها را مشاهده میکنید:
برای ایجاد یک رکورد جدید، از متد save()
استفاده میکنیم:
$user = new UsersModel();
$user->name = 'Ali';
$user->email = 'ali@example.com';
$user->password = password_hash('password123', PASSWORD_DEFAULT);
$user->created_at = date('Y-m-d H:i:s');
$user->save();
برای خواندن رکوردها، میتوانیم از متدهای find()
و findByEmail()
استفاده کنیم:
$user = UsersModel::findByEmail('ali@example.com');
echo $user->name;
برای بهروزرسانی یک رکورد موجود، کافی است مقدار ویژگیها را تغییر داده و متد save()
را فراخوانی کنیم:
$user->name = 'Ali Reza';
$user->save();
برای حذف یک رکورد، میتوانیم از متد delete()
استفاده کنیم (در صورت نیاز به افزودن آن به مدل):
public function delete()
{
$this->db->where('id', $this->id);
return $this->db->delete(self::$tableName);
}
password_hash()
برای ذخیرهسازی رمزعبور استفاده کنید.find()
برای جستجو و save()
برای ذخیرهسازی استفاده کنید.