本文整理汇总了PHP中think\Db::table方法的典型用法代码示例。如果您正苦于以下问题:PHP Db::table方法的具体用法?PHP Db::table怎么用?PHP Db::table使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类think\Db
的用法示例。
在下文中一共展示了Db::table方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getAuthList
/**
* 获得权限列表
* @param integer $uid 用户id
* @param integer $type
*/
protected function getAuthList($uid, $type)
{
static $_authList = array();
//保存用户验证通过的权限列表
$t = implode(',', (array) $type);
if (isset($_authList[$uid . $t])) {
return $_authList[$uid . $t];
}
if ($this->_config['AUTH_TYPE'] == 2 && isset($_SESSION['_AUTH_LIST_' . $uid . $t])) {
return $_SESSION['_AUTH_LIST_' . $uid . $t];
}
//读取用户所属用户组
$groups = $this->getGroups($uid);
$ids = array();
//保存用户所属用户组设置的所有权限规则id
foreach ($groups as $g) {
$ids = array_merge($ids, explode(',', trim($g['rules'], ',')));
}
$ids = array_unique($ids);
if (empty($ids)) {
$_authList[$uid . $t] = array();
return array();
}
$map = array('id' => array('in', $ids), 'type' => $type, 'status' => 1);
//读取用户组所有权限规则
$rules = \think\Db::table($this->_config['AUTH_RULE'])->where($map)->field('condition,url,module')->select();
//循环规则,判断结果。
$authList = array();
//
foreach ($rules as $rule) {
if (!empty($rule['condition'])) {
//根据condition进行验证
$user = $this->getUserInfo($uid);
//获取用户信息,一维数组
$condition = '';
$command = preg_replace('/\\{(\\w*?)\\}/', '$user[\'\\1\']', $rule['condition']);
@eval('$condition=(' . $command . ');');
if ($condition) {
$authList[] = strtolower($rule['module'] . "/" . $rule['url']);
}
} else {
//只要存在就记录
$authList[] = strtolower($rule['module'] . "/" . $rule['url']);
}
}
$_authList[$uid . $t] = $authList;
if ($this->_config['AUTH_TYPE'] == 2) {
//规则列表结果保存到session
$_SESSION['_AUTH_LIST_' . $uid . $t] = $authList;
}
return array_unique($authList);
}
示例2: detach
/**
* 解除关联的一个中间表数据
* @access public
* @param integer|array $data 数据 可以使用关联对象的主键
* @param bool $relationDel 是否同时删除关联表数据
* @return integer
*/
public function detach($data, $relationDel = false)
{
if (is_array($data)) {
$id = $data;
} elseif (is_int($data)) {
// 根据关联表主键直接写入中间表
$id = $data;
} elseif ($data instanceof Model) {
// 根据关联表主键直接写入中间表
$relationFk = $data->getPk();
$id = $data->{$relationFk};
}
// 删除中间表数据
$pk = $this->parent->getPk();
$pivot[$this->localKey] = $this->parent->{$pk};
$pivot[$this->foreignKey] = is_array($id) ? ['in', $id] : $id;
Db::table($this->middle)->where($pivot)->delete();
// 删除关联表数据
if ($relationDel) {
$model = $this->model;
$model::destroy($id);
}
}