You are here

7.6 加载、删除、创建、保存实体

admin 的头像
Submitted by admin on 星期一, 2015-08-31 10:19

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

对于定义的实体类型,我们最好为其实现增删改查等API函数,方便别处调用:

{entity_type}_load(),

{entity_type}_create(),

{entity_type}_save(),

{entity_type}_delete_multiple(),

Entity API模块,为我们提供了entity_create()、 entity_save()、 entity_delete()等函数,直接使用Entity API里面的即可,我们还有必要定义自己的么?最好还是定义一下,也就是有这个必要。我们来看看我们的实现:

/**

 * Fetch a breadcrumb object. 

 *

 * @param $bid

 *   Integer specifying the breadcrumb id.

 * @param $reset

 *   A boolean indicating that the internal cache should be reset.

 * @return

 *   A fully-loaded $breadcrumb object or FALSE if it cannot be loaded.

 *

 * @see breadcrumb2_load_multiple()

 */

function breadcrumb2_load($bid, $reset = FALSE) {

  $breadcrumbs = breadcrumb2_load_multiple(array($bid), array(), $reset);

  return reset($breadcrumbs);

}

 

 

/**

 * Load multiple breadcrumbs based on certain conditions.

 *

 * @param $bids

 *   An array of breadcrumb IDs.

 * @param $conditions

 *   An array of conditions to match against the {breadcrumb} table.

 * @param $reset

 *   A boolean indicating that the internal cache should be reset.

 * @return

 *   An array of breadcrumb objects, indexed by bid.

 *

 * @see entity_load()

 * @see breadcrumb2_load()

 */

function breadcrumb2_load_multiple($bids = array(), $conditions = array(), $reset = FALSE) {

  return entity_load('breadcrumb2', $bids, $conditions, $reset);

}

 

/**

 * Deletes a breadcrumb.

 */

function breadcrumb2_delete(Breadcrumb $breadcrumb) {

  $breadcrumb->delete();

}

 

 

/**

 * Delete multiple breadcrumbs.

 *

 * @param $bids

 *   An array of breadcrumb IDs.

 */

function breadcrumb2_delete_multiple(array $bids) {

  entity_get_controller('breadcrumb2')->delete($bids);

}

 

 

/**

 * Create a breadcrumb object.

 */

function breadcrumb2_create($values = array()) {

  return new Breadcrumb($values);

}

 

 

/**

 * Saves a breadcrumb to the database.

 *

 * @param $breadcrumb

 *   The breadcrumb object.

 */

function breadcrumb2_save(Breadcrumb $breadcrumb) {

  return $breadcrumb->save();

}

这都是模式化的代码,对应的实现,可以参考profile2,也可以参考model模块。


Drupal版本: