起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1546|回复: 1

[处理中3] php 自定义多表查询应该怎么写?

[复制链接]

2

主题

5

帖子

63

积分

初级会员

Rank: 2

积分
63
QQ
发表于 2018-5-16 17:15:47 | 显示全部楼层 |阅读模式
我尝试写了一个php的自定义action
如下:
  1. public static function getBYList($params, $context){
  2.         $pdo = $context->Connection(self::$DATASOURCE_EMOLDWXTAR);  
  3.         $sql = "select SC_Sb_FK, SC_SbMaintainOID, StartTime, SC_TypeDict_FK, Devicename, Deviceno,SC_SbCateogry_FK,SC_SBStandard_FK,EnpriseNo,Type from SC_SbMaintain a left join SC_Sb b on a.SC_Sb_FK = b.SC_SbOID left join SC_TypeDict c on c.SC_TypeDictOID = a.SC_TypeDict_FK where FinishTime is null and (a.SYS_Deleted <> '1' or a.SYS_Deleted is null)";
  4.         $columnJson = '[{"name":"SC_Sb_FK","type":"String"},{"name":"SC_SbMaintainOID","type":"String"},{"name":"StartTime","type":"DateTime"},{"name":"SC_TypeDict_FK","type":"String"},{"name":"Devicename","type":"String"},{"name":"Deviceno","type":"String"},{"name":"SC_SbCateogry_FK","type":"String"},{"name":"SC_SBStandard_FK","type":"String"},{"name":"EnpriseNo","type":"String"},{"name":"Type","type":"String"}]';
  5.         $columns = json_decode($columnJson, true);

  6.         try{
  7.             $table = \baas\data\Util::queryDataBySQL($pdo, $sql, array(), $columns);
  8.             echo json_encode(\baas\data\Transform::tableToJson($table));
  9.         }
  10.         catch (Exception $e)
  11.         {
  12.             var_dump($e);
  13. }
  14.     }
复制代码
我在页面端调用该方法:
  1. var bylistdata = this.comp("byListData");
  2. var bylist = this.comp("bylist");
  3. justep.Baas.sendRequest({
  4.                         "url" : "/emold_wx/user",
  5.                         "action" : "getBYList",
  6.                         "async" : false,
  7.                         "params" : {},
  8.                         "success" : function(data) {
  9.                                 bylistdata.loadData(data);
  10.                                 console.log(JSON.stringify(data));
  11.                                 bylist.refresh();
  12.                         },
  13.                         "fail": function(data){
  14. //                                consol.log(data);
  15.                         }
  16.                 });
复制代码
console.log(JSON.stringify(data));这句输出结果如下:
{"@type":"table","userdata":{"relationAlias":"SC_Sb_FK,SC_SbMaintainOID,StartTime,SC_TypeDict_FK,Devicename,Deviceno,SC_SbCateogry_FK,SC_SBStandard_FK,EnpriseNo,Type","relationTypes":"String,String,DateTime,String,String,String,String,String,String,String"},"rows":[{"userdata":{"recordState":"none"},"SC_Sb_FK":{"value":"00046192-0000-0000-0000-00000C2DD3B3"},"SC_SbMaintainOID":{"value":"00031E3E-0000-0000-0000-0000629DCB78"},"StartTime":{"value":"1970-01-01T08:00:00.000Z"},"SC_TypeDict_FK":{"value":"000CA6CD-0000-0001-0000-00000C323930"},"Devicename":{"value":"%E7%89%A7%E9%87%8E%E5%8A%A0%E5%B7%A5%E4%B8%AD%E5%BF%83"},"Deviceno":{"value":"MY001"},"SC_SbCateogry_FK":{"value":"00040F22-0000-0000-0000-000028F2F4FA"},"SC_SBStandard_FK":{"value":"000E0C98-0000-0000-0000-00000C2DEFF4"},"EnpriseNo":{"value":""},"Type":{"value":"%E4%BF%9D%E5%85%BB"}}]}

无法赋给数据模型bylistdata
bylistdata的源码如下:
  1. <div component="$UI/system/components/justep/data/baasData" autoLoad="false" xid="byListData" idColumn="SC_SbMaintainOID" directDelete="false">
  2.                           <column label="设备保养列表主键" name="SC_SbMaintainOID" type="String" xid="SC_SbMaintainOID"></column>
  3.                           <column label="设备外键" name="SC_Sb_FK" type="String" xid="SC_Sb_FK"></column>
  4.                           <column label="开始时间" name="StartTime" type="Date" xid="SC_SbMaintainOID"></column>
  5.                           <column label="项目类型外键" name="SC_TypeDict_FK" type="String" xid="SC_TypeDict_FK"></column>
  6.                           <column label="设备名称" name="Devicename" type="String" xid="Devicename"></column>
  7.                           <column label="设备编号" name="Deviceno" type="String" xid="Deviceno"></column>
  8.                           <column label="设备类别外键" name="SC_SbCateogry_FK" type="String" xid="SC_SbCateogry_FK"></column>
  9.                           <column label="设备规格外键" name="SC_SBStandard_FK" type="String" xid="SC_SBStandard_FK"></column>
  10.                           <column label="企业编号" name="EnpriseNo" type="String" xid="EnpriseNo"></column>
  11.                           <column label="保养类别" name="Type" type="Stringg" xid="Type"></column>
  12.                   </div>
复制代码
由于没有明确定义主键,所以这一部分是手写的。
应该怎么改才能让bylistdata.loadData(data);生效呢?





发表于 2018-5-28 14:58:44 | 显示全部楼层
自定义action 不需要使用baasData组件,直接用data组件即可!
执行完loadData 方法后 , 调用data.count() 看下data组件中数据是否存在??
如果有说明加载进去了
json格式数据,你和标准数据格式对比下是否正确
http://docs.wex5.com/wex5-ui-question-list-2032/


没显示可能是默认没当前行导致的
http://docs.wex5.com/wex5-ui-question-list-2071
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-25 15:23 , Processed in 0.080719 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表