这是Redbean ORM。我所做的基本上是将我自己的代码包装在它的域对象周围,因此它看起来像
class Book extends RedBean_DomainObject
{
public function __construct($id)
{
if ($id!=0)
$this->find($id);
}
public function save_details($author, $title)
{
// insert OR update new entry
$this->author = $author;
$this->title = $title;
$this->save();
}
}
代码将检查“bean”是否存在;如果是,它将加载它。您将属性分配给类,并调用 save() 方法将其保存到 bean。 RedBean ORM 会自动检测是保存还是更新。
注意:不过,RedBean 域对象已被更好的东西所取代。
我也在使用 WordPress wp-db,我喜欢它的语法
$wpdb->insert("books", array('title' => $title, 'author' =>$author));
我找到了一个little wrapper online,它也允许我在重复键上插入...。
$wpdb->insert_on_duplicate("author_book_relationship",
array('book_id' => $book_id,
'date_published' =>$date_published),
array('book_id' => $book_id));
第一个参数是表,第二个是插入/更新信息,最后一个是UPDATE部分的where子句。
编辑
我通常将 SQL 函数包装在帮助程序中
class BookHelper
{
public function save_relationship($id, $book, $author)
{
global $wpdb;
$wpdb->insert_on_duplicate("author_book_relationship",
array('book_id' => $book_id,
'date_published' =>$date_published),
array('book_id' => $book_id));
}
}
在策略内部
class BookSaveStrategy
{
protected $book_helper;
public function save_relationship($id, $book, $title)
{
// validate id, book and title
//.....
// Save if ok
$this->book_helper->save_relationship($id, $book, $title);
}
}
可以在控制器中使用
if (isset($_POST['save_book']))
{
$book_save_strategy->save($_POST['id'], $_POST['author'], $_POST['title']);
}