关于model中关联查询函数为驼峰命名时,用fast自带的检索会报错的解决办法

a479820787 13天前 64

关联查询的常用方法是在model中加入一个关联函数,然后在控制器中开启关联用with调用即可。
下面是官方文档给的举例:
image.png

现在遇到一个问题:
如果model中的关联函数是驼峰命名的,如:

 public function fromUser(){
        return $this->belongsTo('\app\admin\model\User','from_id')->setEagerlyType(0)->joinType('LEFT');
    }

因为tp5.0的框架原因,在前端js中需要用from_user去调用
image.png

但是这样如果搜索对应值在查询条件中会用from_user去调用检索,但tp5.0的关联中是把fromUser作为关联表的别名的,检索的时候就会报错。
image.png
解决办法是修改控制器基类
application/common/controller/Backend.php 中的 生成查询条件函数buildparams,283行处

       foreach ($filter as $k => $v) {
            $sym = isset($op[$k]) ? $op[$k] : '=';
            if (stripos($k, ".") === false) {
                $k = $tableName . $k;
            }

改为

 foreach ($filter as $k => $v) {
            $sym = isset($op[$k]) ? $op[$k] : '=';
            if (stripos($k, ".") === false) {
                $k = $tableName . $k;
            }else{
                $k = explode(".",$k);
                $k[0] = \think\Loader::parseName($k[0], 1, false);
                $k = implode('.',$k);
            }

建议Karson将对应更改更新到下个版本中 @ Karson

最后于 13天前 被a479820787编辑
最新回复 (0)
返回