TP5.1 多表关联查询中实现搜索功能
问题描述
多表关联搜索功能的问题:
代码如下:
// 实现搜索功能$productName = Request::param('productName');$storeName = Request::param('storeName');if ( !empty($productName) && empty($storeName) ) { $map[] = ['p.name', 'like', '%' . $productName . '%'];} else if ( !empty($storeName) && empty($productName) ) { $map[] = ['s.name', 'like', '%' . $storeName . '%'];} else if ( !empty($productName) && !empty($storeName) ) { $map[] = ['p.name', 'like', '%' . $productName . '%']; $map[] = ['s.name', 'like', '%' . $storeName . '%'];}// 定义分页参数$limit = isset($_GET['limit']) ? $_GET['limit'] : 10;$page = isset($_GET['page']) ? $_GET['page'] : 1;$stockList = StockModel::where($map) -> alias('sk') -> leftJoin('product p', 'sk.product_id = p.id') -> join('store s', 'sk.store_id = s.id') -> where('sk.status', 1) -> order('sk.product_id', 'desc') -> field('sk.*, p.name as product_name, s.name as store_name') -> page($page, $limit) -> select();
1、以上代码中,想实现的搜索功能,但是$map条件中,因为搜索的是通过join加入的附表的字段,所以用附表的别名.字段的形式,如:p.name, s.name,这样搜索有问题,生成的SQL语句中,把两个附表都过滤了,如下:
这样的结果附加表没了,所以字段加了别名就不对了。
2、把搜索条件哪里,改成表名.字段的形式,这样搜索主表的字段是没问题,但是搜索附表还是有问题,这样生成的SQL语句中,附表保留了,但是搜索还是有问题,报错如下:
哪位大神帮忙看一下,这个要怎么做呢???
问题解答
回答1:看你这写的是想在两张关联的表里查数据吧,你用parma接受两个值吗?
你可以这样,只接收一个值$where
$map[] = ['p.name | s.name', 'like', '%' . $productName . '%'];
然后用链接查询,再加上分组”gruop",试试看一下!
不知道我说的对不对
相关文章:
1. mysql - 一个表和多个表是多对多的关系,该怎么设计2. python 如何实现PHP替换图片 链接3. html5 - iOS的webview加载出来的H5网页,怎么修改html标签select的样式字体?4. 一个mysql联表查询的问题5. python如何不改动文件的情况下修改文件的 修改日期6. javascript - git clone 下来的项目 想在本地运行 npm run install 报错7. mysql主从 - 请教下mysql 主动-被动模式的双主配置 和 主从配置在应用上有什么区别?8. angular.js - 三大框架react、vue、angular的分析9. python - django 里自定义的 login 方法,如何使用 login_required()10. 主从备份 - 跪求mysql 高可用主从方案
