ارتباط شئ گرا با پایگاه داده
از کلاس dbObject
برای نمونه سازی جداول پایگاه داده استفاده می شود .
در این ارتباط برای هر جدول یک کلاس متناظر تعریف می شود . نام ستون ها در کلید های یک آرایه و در مقدار هر کدام اطلاعاتی از جمله نوع، اجباری و یکتا بودن هر ستون مشخص می شود.
مزیت این روش بر ارتباط مستقیم ، شئ گرا بودن این ارتباط و مشخص بودن نوع، اجباری و یکتا بودن هر ستون است . از تکرار چند باره بررسی مقادیر ستون ها جلوگیری کرده، در صورتی مقدار ستونی با آنچه مشخص شده مغایرت داشته باشد، یا مقداری برای ستون های اجباری مشخص نشده باشد و یا مقدار ستون های یکتا، تکراری باشد، به صورت خودکار قبل از ارسال درخواست برای پایگاه داده بررسی و با پرتاب استثناهای به ترتیب package\base\db\InputRequired
، package\base\db\InputDataType
و package\base\db\duplicateRecord
از ادامه روند جلوگیری خواهد کرد .
کلاس جدول users
<?php
namespace packages\packagename;
use packages\base\db\dbObject;
class user extends dbObject {
protected $dbTable = "users";
protected $primaryKey = "id";
protected $dbFields = array(
"firstname" => array("type" => "text", "required" => true),
"lastname" => array("type" => "text"),
"email" => array("type" => "text", "unique" => "true"),
"cellphone" => array("type" => "text", "required" => true, "unique" => "true"),
"password" => array("type" => "text", "required" => true),
"city" => array("type" => "int"),
"status" => array("type" => "int", "required" => true)
);
protected $relations = array(
"city" => array("hasOne", state\city::class, "type")
);
}
متد get
با استفاده از این متد میتوانید اطلاعات را به صورت دسته جمعی از پایگاه داده دریافت کنید . نوع بازگشتی این متد آرایه ای از شی های متناظر جدول درخواستی است . پارامتر اول تعداد ردیف ها و در پارامتر دوم، نام ستون و یا ستون های درخواستی از جدول را دریافت می کند .
$user = new user();
$user->get(limit, columns);
user::get(limit, columns);
مثال 1
$user = new user();
$users = $user->get(); // or user::get()
foreach ($users as $user) {
print_r($user->toArray());
}
/* output
array(
"id"=> 1,
"firstname" => "Sam smith",
"email" => "[email protected]"
);
array(
"id"=> 2,
"firstname" => "John",
"email" => "[email protected]"
);
*/
مثال 2
$user = new user();
$users = $user->get(null, array("firstname")); // or user::get(null, array("firstname"))
foreach ($users as $user) {
echo $user->firstname;
}
/* output
Sam smith
John
*/
متد getOne
با استفاده از این متد میتوانید ، اطلاعات فقط یک ردیف را از پایگاه داده دریافت کنید . نوع بازگشتی این متد یک شئ از کلاس متناظر است . این متد در پارامتر خود نام ستون و یا ستون های درخواستی از جدول را دریافت می کند .
$user = new user();
$user = $user->getOne(columns);
مثال 1
$user = new user();
$user = $user->getOne();
echo $user->id;
echo $user->firstname;
echo $user->email;
/* output
1
Sam smith
[email protected]
*/
مثال 2
$user = new user();
$user = $user->getOne(array("firstname", "email"));
echo $user->firstname;
echo $user->email;
/* output
Sam smith
[email protected]
\*/
متد getValue
این متد فقط مقدار یک ستون جدول را از پایگاه داده دریافت میکند . نوع بازگشتی این متد یک بسته به تعداد مقدار های بازگشتی میتواند یک مقدار ثابت و یا یک آرایه باشد که بسته به نوع ستون، نوع مقدار متفاوت خواهد بود . این متد در تنها پارامتر نام ستون دریافت میکند .
$user = new user();
$user->getValue(column);