• thinkphp:判断数据是否存在,再作为数据库的判断条件(给数据库查询增加额外的查询条件)


    方法一:用thinkphp的语法去写

    1. public function select_endProduceinfo(){
    2. $like_info = input('post.like_info', '');
    3. $page = input('post.page', 1);
    4. $pageSize = input('post.pageSize', 10);
    5. $start = ($page - 1) * $pageSize;
    6. $username = input('post.username','');
    7. $search_line1 = input('post.search_line1','');
    8. $search_line2 = input('post.search_line2','');
    9. $search_line3 = input('post.search_line3','');
    10. $search_line4 = input('post.search_line4','');
    11. $employee_num = db::table('fa_account_info')->where(['username' => $username])->value('employee_num');
    12. //全部数据信息
    13. $data['info'] = db::table('wip_transactions')
    14. ->alias('d') // 设置wip_jobs_all的别名
    15. ->join(['wip_jobs_all' => 'a'], 'd.wip_entity_name = a.wip_entity_name')
    16. ->join(['sf_item_no' => 'c'], 'a.primary_item = c.item_no')
    17. ->join(['hr_employees' => 'e'], 'e.employee_num = d.employee_num')
    18. ->field('d.*, c.item_no as item_no, c.item_name as item_name, c.units as uom, e.employee_name as employee_name')
    19. ->where(['d.employee_num' => $employee_num])
    20. ->where(['d.wip_entity_name'=>['like','%'.$like_info.'%']]);
    21. // 添加查询条件
    22. if (!empty($search_line1)) {
    23. $data['info']->where('d.wip_entity_name', 'LIKE', "%$search_line1%");
    24. }
    25. if (!empty($search_line2)) {
    26. $data['info']->where('d.operation_code', 'LIKE', "%$search_line2%");
    27. }
    28. if (!empty($search_line3)) {
    29. $data['info']->where('item_no', 'LIKE', "%$search_line3%");
    30. }
    31. if (!empty($search_line4)) {
    32. $data['info']->where('item_name', 'LIKE', "%$search_line4%");
    33. }
    34. $data['info'] = $data['info']
    35. ->order(['transaction_date' => 'desc'])
    36. ->limit($start, $pageSize)
    37. ->select();
    38. //求出数据总数
    39. $data['total'] = db::table('wip_transactions')
    40. ->alias('d') // 设置wip_jobs_all的别名
    41. ->join(['wip_jobs_all' => 'a'], 'd.wip_entity_name = a.wip_entity_name')
    42. ->join(['sf_item_no' => 'c'], 'a.primary_item = c.item_no')
    43. ->join(['hr_employees' => 'e'], 'e.employee_num = d.employee_num')
    44. ->field('d.*, c.item_no as item_no, c.item_name as item_name, c.units as uom, e.employee_name as employee_name')
    45. ->where(['d.employee_num' => $employee_num])
    46. ->where(['d.wip_entity_name'=>['like','%'.$like_info.'%']]);
    47. // 添加查询条件
    48. if (!empty($search_line1)) {
    49. $data['info']->where('d.wip_entity_name', 'LIKE', "%$search_line1%");
    50. }
    51. if (!empty($search_line2)) {
    52. $data['info']->where('d.operation_code', 'LIKE', "%$search_line2%");
    53. }
    54. if (!empty($search_line3)) {
    55. $data['info']->where('item_no', 'LIKE', "%$search_line3%");
    56. }
    57. if (!empty($search_line4)) {
    58. $data['info']->where('item_name', 'LIKE', "%$search_line4%");
    59. }
    60. $data['total'] = $data['total']
    61. ->order(['transaction_date' => 'desc'])
    62. ->count();
    63. //处理数据
    64. for ($i = 0; $i < count($data['info']); $i++) {
    65. //计算时差
    66. $data['info'][$i]['hours_diff'] = number_format(($data['info'][$i]['end_date'] - $data['info'][$i]['begin_date']) / 3600, 4);
    67. if ($data['info'][$i]['transaction_type'] != '良品') {
    68. $data['info'][$i]['hours_diff'] = '';
    69. }
    70. //处理时间
    71. $data['info'][$i]['transaction_date'] = date('Y-m-d', $data['info'][$i]['transaction_date']);
    72. $data['info'][$i]['begin_date'] = date('Y-m-d H:i:s', $data['info'][$i]['begin_date']);
    73. $data['info'][$i]['end_date'] = date('Y-m-d H:i:s', $data['info'][$i]['end_date']);
    74. if (!$data['info'][$i]['transaction_quantity']) {
    75. $data['info'][$i]['transaction_quantity'] = 0;
    76. }
    77. }
    78. echo json_encode($data);
    79. }

    方法二:嵌套mysql的语法

    1. public function select_POorder_deatil(){
    2. $page = input('post.page', 1);
    3. $pageSize = input('post.pageSize', 10);
    4. $start = ($page - 1) * $pageSize;
    5. $order_number = input('post.order_number','');
    6. //头信息
    7. $header_info = "
    8. SELECT pha.po_num, pha.status,order_type, pha.note,pha.payment_term ,pha.order_date,pha.app_remark, pha.creation_date, pha.tax_amount,
    9. pha.tax_flag,pha.all_line_amount, pha.created_by, pha.youhui_amount, vendor_name,pha.po_all_amount,pha.vendor_code,
    10. pha.payment_type,pha.tax_name
    11. FROM po_headers_all pha, vendors v
    12. WHERE v.vendor_code = pha.vendor_code
    13. AND po_num= '" .$order_number."'
    14. ";
    15. $data['header_info'] = Db::query($header_info);
    16. //处理日期
    17. for($i=0;$i<count($data['header_info']);$i++){
    18. $data['header_info'][$i]['creation_date'] = date('Y-m-d H:i:s', $data['header_info'][$i]['creation_date']);
    19. $data['header_info'][$i]['order_date'] = date('Y-m-d', $data['header_info'][$i]['order_date']);
    20. }
    21. //行信息
    22. $line_info = "
    23. SELECT a.line,a.stockid,b.item_desc,b.item_name,a.uom,a.price,a.quantity,a.po_num,a.line_amount,a.last_update_date,
    24. a.creation_date,ifnull(quantity_received,0) quantity_received,ifnull(quantity_accepted,0) quantity_accepted,
    25. ifnull(quantity_deliveried,0) quantity_deliveried,ifnull(quantity_cancelled,0) quantity_cancelled,
    26. ifnull(quantity_rejected,0) quantity_rejected,ifnull(quantity_billed,0) quantity_billed,a.created_by,
    27. (select locationname from locations d where d.loccode=a.subinventory_code) locationname,a.need_date
    28. FROM po_lines_all a,sf_item_no b
    29. where a.stockid=b.item_no
    30. and po_num = '" .$order_number."'
    31. ";
    32. $line_info .="
    33. ORDER BY a.line ASC
    34. LIMIT $start, $pageSize
    35. ";
    36. $data['line_info'] = Db::query($line_info);
    37. //处理日期
    38. for($i=0;$i<count($data['line_info']);$i++){
    39. $data['line_info'][$i]['creation_date'] = date('Y-m-d H:i:s', $data['line_info'][$i]['creation_date']);
    40. }
    41. //行总数
    42. $line_count = "
    43. SELECT COUNT(*) AS count
    44. FROM (
    45. SELECT a.line,a.stockid,b.item_desc,b.item_name,a.uom,a.price,a.quantity,a.po_num,a.line_amount,a.last_update_date,
    46. a.creation_date,ifnull(quantity_received,0) quantity_received,ifnull(quantity_accepted,0) quantity_accepted,
    47. ifnull(quantity_deliveried,0) quantity_deliveried,ifnull(quantity_cancelled,0) quantity_cancelled,
    48. ifnull(quantity_rejected,0) quantity_rejected,ifnull(quantity_billed,0) quantity_billed,a.created_by,
    49. (select locationname from locations d where d.loccode=a.subinventory_code) locationname,a.need_date
    50. FROM po_lines_all a,sf_item_no b
    51. where a.stockid=b.item_no
    52. and po_num = '" .$order_number."'
    53. ) AS subquery;";
    54. $result = Db::query($line_count);
    55. $data['line_info_total'] = isset($result[0]['count']) ? $result[0]['count'] : 0;
    56. echo json_encode($data);
    57. }

  • 相关阅读:
    基于单片机的语音存储与回放系统设计
    【亲测】网址引导页管理系统
    JS Array 操作方法合集
    最新解决谷歌翻译无法使用的教程
    机器学习之KNN —— K最近邻分类算法
    运输层详解
    Spring Cloud【什么是ZipKin、Docker搭建Zipkin服务、Zipkin客户端搭建 、SkyWalking核心概念】(十三)
    WPF界面设计-更改按钮样式 自定义字体图标
    【Unity入门计划】制作RubyAdventure03-使用碰撞体&触发器实现世界交互
    uniapp开发app注意事项
  • 原文地址:https://blog.csdn.net/weixin_46001736/article/details/132847488