码迷,mamicode.com
首页 > Web开发 > 详细

ThinkPHP6.0 模型搜索器的使用

时间:2020-07-09 22:32:04      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:参数   操作   index   rom   hsql   查询条件   搜索   ace   class   

搜索器用于封装查询条件表达式,必须在模型中定义,只有使用模型操作数据时才能用搜索器。调用搜索器时使用的是数据表字段,可以不用定义搜索器方法,默认是 = 条件;如果不是数据表字段,必须定义对应的搜索器方法。

1. 调用搜索器


直接调用,默认查询条件是 =

UserModel::withSearch([‘name‘], [‘name‘ => ‘张三‘])
    ->fetchSql(true)
    ->select();
SELECT * FROM `user` WHERE  `name` = ‘张三‘

在模型中自定义搜索器方法,改变默认的 =

<?php
namespace app\index\model;

class User extends \think\Model
{
	public function searchNameAttr($query, $value, $data)
    {
        $query->where(‘name‘,‘like‘, $value . ‘%‘);
    }
}
UserModel::withSearch([‘name‘], [‘name‘ => ‘张三‘])
    ->fetchSql(true)
    ->select();
SELECT * FROM `user` WHERE  `name` LIKE ‘张三%‘

2. 搜索器方法的三个参数 searchNameAttr($query, $value, $data)


  • $query: think\db\Query 对象,用于链接操作
  • $value:withSearch() 第二个参数中当前搜索器字段对应的值
  • $data:withSearch() 第二个参数的值

可以直接在搜索器方法中打印参数,看看到底是个啥

<?php
namespace app\index\model;

class User extends \think\Model
{
	public function searchNameAttr($query, $value, $data)
    {
    	halt($query, $value, $data);

        $query->where(‘name‘,‘like‘, $value . ‘%‘);
    }
}

技术图片

ThinkPHP6.0 模型搜索器的使用

标签:参数   操作   index   rom   hsql   查询条件   搜索   ace   class   

原文地址:https://www.cnblogs.com/cfmy/p/13276272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!