Eri*_*ica 2 php mysql pdo object
我找不到这个问题的答案。
我想将一个PHP对象保存到MySQL数据库中。例:
class user{
private $id, $email, $pw, $first, $last, $group,.....;
// getters and setters
}
class someclass{
public function someFunction(){
$pdo = new PDO(...);
$objUser = new user();
$objUser->setEmail(....);
$objUser->setFirst(....);
//bla bla bla
// and I want to save this user object to the DB with something like:
$pdo->insert($objUser); //in this case db table equals to class name
//instead of building/writing query manually.
//for mysql_query I have made a class for building queries for insert, update and delete
//but mysq_query is old and deprecated
}
}
Run Code Online (Sandbox Code Playgroud)
我要求这样做的主要原因是因为我不想编写默认情况下可以存在的东西。
谢谢。
我可能会在user类中实现insert,update和delete方法,而不是使其成为数据库类的功能来解释提供给它的对象。
在PHP或mysql PDO类中没有内置的方法可以执行此操作,但是某些框架实现了ORM(对象关系映射),可让您轻松地在对象类中指定它们与数据库的交互方式。(Laravel框架ORM文档)
这是实现它的一种非常基本的方法。
class ORM {
public function insert($pdo) {
// Get object name
// Get object properties
// Check if database table exists with object name
// Generate and run a query to insert a record into that table
// using the property names and values
}
public function update($pdo) {
// Like insert, but update
}
public function delete($pdo) {
// Etc...
}
}
class user extends ORM {
private $id, $email, $pw, $first, $last, $group,.....;
// getters and setters
}
class someclass{
public function someFunction(){
$pdo = new PDO(...);
$objUser = new user();
$objUser->setEmail(....);
$objUser->setFirst(....);
//bla bla bla
$objUser->insert($pdo);
}
}
Run Code Online (Sandbox Code Playgroud)