php repositories,app/Repositories/UserRepository.php · 在你们人类愚蠢世界里流浪的逗比/uping - Gitee.com...

namespace App\Repositories;

use App\User;

use App\Role;

/**

* 用户仓库UserRepository

*

* @author tao lee

*/

class UserRepository extends BaseRepository

{

/**

* The Role instance.

*

* @var App\Role

*/

protected $role;

/**

* Create a new UserRepository instance.

*

* @param App\User $user

* @param App\Role $role

* @return void

*/

public function __construct(

User $user,

Role $role)

{

$this->model = $user;

$this->role = $role;

}

/**

* 存储管理员

*

* @param App\User $manager

* @param array $inputs

* @return App\User

*/

private function saveManager($manager, $inputs)

{

$manager->username = $manager->nickname = e($inputs['username']);

$manager->password = bcrypt(e($inputs['password']));

$manager->email = e($inputs['email']);

$manager->realname = e($inputs['realname']);

if ($manager->save()) {

$manager->roles()->attach($inputs['role']); //附加上用户组(角色)

}

return $manager;

}

/**

* 更新管理型用户

*

* @param App\User $manager

* @param array $inputs

* @return void

*/

private function updateManager($manager, $inputs)

{

$manager->nickname = e($inputs['nickname']);

$manager->realname = e($inputs['realname']);

$manager->is_locked = e($inputs['is_locked']);

if ((!empty($inputs['password'])) && (!empty($inputs['password_confirmation']))) {

$manager->password = bcrypt(e($inputs['password']));

}

if ($manager->save()) {

//确保一个管理员只拥有一个角色

$roles = $manager->roles;

if ($roles->isEmpty()) { //判断角色结果集是否为空

$manager->roles()->attach($inputs['role']); //空角色,则直接同步角色

} else {

if (is_array($roles)) {

//如果为对象数组,则表明该管理用户拥有多个角色

//则删除多个角色,再同步新的角色

$manager->detachRoles($roles);

$manager->roles()->attach($inputs['role']); //同步角色

} else {

if ($roles->first()->id !== $inputs['role']) {

$manager->detachRole($roles->first());

$manager->roles()->attach($inputs['role']); //同步角色

}

}

}

//上面这一大段代码就是保证一个管理员只拥有一个角色

}

}

/**

* 获取所有角色(用户组)

*

* @return Illuminate\Support\Collection

*/

public function role()

{

return $roles = $this->role->all();

}

/**

* 获取用户角色

*

* @param App\User

* @return Illuminate\Support\Collection

*/

public function getRole($manager)

{

return $manager->roles->first();

}

/**

* 伪造一个id为0的Role对象

*

* @return App\Role

*/

public function fakeRole()

{

$role = new $this->role;

$role->id = 0; //id置为不存在的0

return $role;

}

#********

#* 资源 REST 相关的接口函数 START

#********

/**

* 用户资源列表数据

*

* @param array $data

* @param string $extra

* @param string $size 分页大小

* @return Illuminate\Support\Collection

*/

public function index($data = [], $extra = '', $size = null)

{

if (!ctype_digit($size)) {

$size = cache('page_size', '10');

}

$s_phone = e($data['s_phone']);

if (!empty($s_phone)) {

$users = $this->model->where('phone', '=', $s_phone)

->where(function ($query) use ($data) {

$s_name = e($data['s_name']);

if (!empty($s_name)) {

$query->where('username', 'like', '%'.$s_name.'%')

->orWhere('nickname', 'like', '%'.$s_name.'%')

->orWhere('realname', 'like', '%'.$s_name.'%');

}

})

->paginate($size);

} else {

$users = $this->model->where(function ($query) use ($data) {

$s_name = e($data['s_name']);

if (!empty($s_name)) {

$query->where('username', 'like', '%'.$s_name.'%')

->orWhere('nickname', 'like', '%'.$s_name.'%')

->orWhere('realname', 'like', '%'.$s_name.'%');

}

})

->paginate($size);

}

return $users;

}

/**

* 存储用户

*

* @param array $inputs

* @param string $extra

* @return App\User

*/

public function store($inputs, $extra = '')

{

$user = new $this->model;

$user = $this->saveManager($user, $inputs);

return $user;

}

/**

* 获取编辑的用户

*

* @param int $id

* @param string $extra

* @return App\User

*/

public function edit($id, $extra = '')

{

$user = $this->model->findOrFail($id);

return $user;

}

/**

* 更新用户

*

* @param int $id

* @param array $inputs

* @param string $extra

* @return void

*/

public function update($id, $inputs, $extra = '')

{

$user = $this->model->findOrFail($id);

$user = $this->updateManager($user, $inputs);

}

#********

#* 资源 REST 相关的接口函数 END

#********

/**

* 更新当前用户资料

*

* @param App\User $me

* @param array $inputs

* @return void

*/

public function updateMe($me, $inputs)

{

$me->nickname = e($inputs['nickname']);

$me->realname = e($inputs['realname']);

if (!empty($inputs['phone'])) {

$me->phone = e($inputs['phone']);

}

if ((!empty($inputs['password'])) && (!empty($inputs['password_confirmation']))) {

$me->password = bcrypt(e($inputs['password']));

}

if ($me->save()) {

//触发更新个人资料事件,这里将触发事件放置在仓库里可能有些不妥

//event(new UserUpdate($me));

}

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 根据提供的信息,这个问题似乎是和Pentaho中的插件存储库相关的访问问题。 "Pentaho" 是一种用于数据集成和业务智能(BI)的开源工具。而 "/@pentaho/di-plugin-repositories@8.3.0.0-371/index.h" 是指特定版本的一个插件存储库的索引文件。 如果出现 "spoon problem accessing /@pentaho/di-plugin-repositories@8.3.0.0-371/index.h" 的错误信息,可能是由于以下几个原因之一: 1. 插件存储库不可访问:这可能是由于网络连接问题或存储库服务器错误引起的。你可以尝试检查网络连接是否正常,或者联系Pentaho支持团队获取有关存储库服务器状态的更多信息。 2. 插件存储库路径错误:如果路径指定不正确,或者文件路径被更改或删除,就可能无法访问索引文件。你可以验证索引文件的路径是否正确,并确保文件存在。 3. 插件存储库版本不匹配:错误信息中提到了特定的插件存储库版本号(8.3.0.0-371),可能是由于Pentaho版本与该插件存储库版本不兼容导致的。你可以尝试与Pentaho版本对应的插件存储库版本,或者升级Pentaho到与该插件存储库版本兼容的版本。 综上所述,通过验证网络连接、检查存储库路径和确保兼容的Pentaho版本,你可以尝试解决这个问题。如果问题仍然存在,建议联系相关技术支持人员获取进一步的帮助。 ### 回答2: spoon问题访问 /@pentaho/di-plugin-repositories@8.3.0.0-371/index.h的原因可能有以下几种: 1. 网络问题:如果你的电脑无法访问这个地址,可能是因为网络连接出现了问题。你可以尝试重新连接到网络或者使用其他网络环境进行尝试。 2. 路径错误:可能是路径设置错误导致无法访问。你可以检查一下路径是否正确,并确认文件或文件夹是否存在。 3. 权限问题:有时候你可能没有访问该文件或文件夹的权限,导致无法访问。你可以尝试使用管理员权限或者联系系统管理员解决权限问题。 4. 插件版本不匹配:如果你的Spoon版本与这个插件版本不兼容,可能会引发访问问题。你可以尝试更新Spoon或找到与你当前版本兼容的插件。 如果以上解决方法都无法解决问题,建议你查看详细的错误信息或者寻求专业的技术支持来解决这个问题。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值