ThinkPHP5踩过的坑
01:redirect函数在框架初始化方法中无效
当初做权限控制,在initialize判断是否有权限,如果无权限就执行跳转,跳转的函数是redirect,但是无论如何都无法跳转出去,当时的版本是5.0+,手册还不太完善,后来得知必须得 return $this->redirect();才可以跳转(重定向);
完整代码:
if(!oAuth($uid)) return $this->redirect($url);
02:分页参数的问题
如果是普通分页没毛病,但是分页后面有其他参数,比如条件查询后分页,点击下一页的时候参数就不见了,解决办法:
分页的第三个参数传:
['query'=>request()->param()]
完整代码
Db::User ->where($where) ->order($order) ->paginate( $pageSize, //每页的数量 false, //是否简洁分页 关简洁分页很简单,简洁分页不会查询总条数,相对来说应该会比较快一点点,他只有上一页和下一个的按钮 ['query'=>request()->param()]); //额外的参数
03:验证器中唯一验证
场景:一个手机号码只能注册一次,但是编辑的时候可以用当前的手机号码!
验证器代码:
protected $rule = [ 'mobile' => 'require|mobile|unique:user,mobile', 'email' => 'require|email|unique:user,email', ]; protected $message = [ 'mobile.require' => '请输入手机号码!', 'mobile.mobile' => '手机号码格式错误!', ];
但是在更新的时候会提示手机号码已经存在了,挺气的,当时找资料没找到,就看日志了,最后在日志中找到了;
原来只要在更新的时候再个验证器传入数据的时候将ID也传进去就可以了,验证器内部会自动排除主键为当前ID的数据;
04:模型的关联方法
在之前在每次查询的时候,都会使用动态关联延迟预载入:with
后来发现不写居然也可以,如果不写就不会执行关联查询,在视图中调用的时候直接使用也是可以了
比如:文章对应发布者:
public function article($id) { return $this->find(id); //之前的写法 return $this->with('user')->find($id); } public function user() { return $this->hasOne('User','id','uid'); } //在模板中 {{$article.user.nickName}}
更多的以后再写
相关推荐
K先生 2020-11-10
wushengyong 2020-10-28
FellowYourHeart 2020-10-05
YClimb 2020-09-15
gaosf 2020-06-14
Hesland 2020-06-14
fanfangood 2020-06-14
稳哥的小灶 2020-05-29
小周 2020-04-30
gaosf 2020-04-25
小周 2020-04-25
FellowYourHeart 2020-04-25
稳哥的小灶 2020-04-25
FellowYourHeart 2020-04-23
ThinkPHP 2020-03-28
doupoo 2020-01-28