سلام وقت بخیر
لیست یه سری دانشجو رو کلاس بیس مدل گرفتیم
class BaseModel
{
protected $db;
protected $table;
protected $primaryKey = 'id';
public function __construct()
{
try {
$this->db = new PDO("mysql:dbname=idepazh;host=localhost", 'root', '');
// ok for test connect page
// echo "ok";
} catch (PDOException $e) {
die('Connection failed: ' . $e->getMessage());
}
}
//getStudent
public function getStudent()
{
$sql = "select * from {$this->table}";
$stmt = $this->db->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_OBJ);
}
، و در فایل زیر که توی یه پوشه دیگس صداش زدیم و مشکلی نداره
حالا سوال من اینه که چه تابعی برای "ایجاد" لیست دانشجویان که چند تا فیلد داره باید بنویسم ؟ که مثه همین تابع ارث بری کنه ؟
class student extends BaseModel
{
protected $table = 'student' ;
protected $primaryKey = 'id';
}
$student = new student();
$students = $student->getStudent();
سلام و احترام
اصطلاح کد
توی کلاس baseModel فقط عملیات مربوط به اتصال به دیتابیس رو قرار بدید. تابع getStudent در جای مناسبی قرار نداره.
شما میتونید تابع getStudent رو داخل کلاس Student که ایجاد کردید قرار بدید و اونو همونجا توسعه بدید.
توصیه
نحوه چینش کلاسها اشتباهه ولی برای تمرینه همین خوبه و ادامه بدید در ادامه دوره یاد میگیرید که چه جوری یک orm بنویسید برای انجام عملیات دیتابیسی.
نحوه insert کردن student
میتونید یه تابع درون کلاس student به اسم create ایجاد کنید که ورودی اون یک آرایست و همون عملیاتی که برای ایجاد دیتا در دیتابیس با pdo انجام میدادید رو انجام بدید
مثال کد insert کردن با PDO
$sql = "INSERT INTO users (name, surname, sex) VALUES (?,?,?)";
$stmt= $pdo->prepare($sql);
$stmt->execute([$name, $surname, $sex]);