调用Create后为何获取不到返回的结果

#1 lrsct

根据帮助文档说明,在数据$db->create($newrow);后可以获取自增长字段的值,为何我获取不到,请各位帮忙,以下是代码:
      //写入主表
      $jobmainObj = spClass("lib_job_main");
      $newrow=array(
      'job_name'=>$job_name,
      'job_type_name'=>$job_type_name,      
      'expect_time'=>$expect_time,
      'important_level'=>$important_level,
      'charge_person_name'=>$charge_person_name
    );      
   $id=$jobmainObj->create($newrow);
    //写入子表
    if (false!=$id){
     $jobsubObj = spClass("lib_job_sub");     
     $jobsubObj->runSql("insert into wj_job_sub (job_id,sub_job_name,item_id,order_id,limted_item_id) select ".$id.",item_name,item_id,order_id,limted_item_id from wj_sub_job_list where type_id=7");  
     }

2012-05-03 10:18:58

#2 jake

看不出来,可能你的主键不是自增量吧。

建议是从我们入门教程的例子开始,试试看行不行 http://www.speedphp.com/easy-database-crud.html

2012-05-03 12:36:34

#3 lrsct

表有设置主键,我跟例程对比了一下,代码编写也一样,没有差别,但就是出不来。

2012-05-04 12:51:24

#4 lrsct

例程在我本机运行可以获取得到,但我写的就是获取不了。

2012-05-04 12:54:50

#5 lrsct

两个类的信息分别如下:
guestbook Object
(
    [pk] => job_id
    [table] => guestbook
    [verifier] =>
    [addrules] => Array
        (
        )

    [linker] =>
    [tbl_name] => guestbook
    [_db] => db_mysql Object
        (
            [conn] => Resource id 13
            [arrSql] => Array
                (
                    [0] => SET NAMES UTF8
                    [1] => DESCRIBE guestbook
                    [2] => INSERT INTO guestbook (name,title,contents) VALUES ('fgjghj','jkhjkghjk','ghjkghj')
                )

        )

)

lib_job_main Object
(
    [pk] => job_id
    [table] => job_main
    [verifier] =>
    [addrules] => Array
        (
        )

    [linker] =>
    [tbl_name] => wj_job_main
    [_db] => db_mysql Object
        (
            [conn] => Resource id 10
            [arrSql] => Array
                (
                    [0] => SET NAMES UTF8
                    [1] => SELECT * FROM wj_acl WHERE controller = 'main' AND action = 'xqkd_newjob_action' ORDER BY aclid
                    [2] => DESCRIBE wj_job_main
                    [3] => INSERT INTO wj_job_main (job_name,job_type_name,expect_time,important_level,charge_person_name,item_attribute,job_construction,cons_person,cons_team_person,cons_team_tel,job_sm,job_create_time,job_creater) VALUES ('FTTH工程','工程','2012-6-15','非常重要','admin','2011二期','','','','','','2012-05-03 12:56:31','admin')
                )

        )

)


2012-05-04 12:57:25

#6 lrsct

我原因找到了,具体是:
如果在表的MODEL里面加上这个过程就不会返回值,去掉后则可以。
        public function create($newrow){
                // 使用array_merge构造新的$row
                $newrow = array_merge($newrow, array(
                        'job_create_time' => date('Y-m-d H:i:s'),
                        'job_creater' => $_SESSION["userinfo"]["uname"]
                ));
                // 调用父类(spModel)的create方法
                parent::create($newrow);
  }

2012-05-04 13:33:44

#7 jake

lrsct 发表于 2012-5-4 13:33
我原因找到了,具体是:
如果在表的MODEL里面加上这个过程就不会返回值,去掉后则可以。
        public function  ...
public function create($newrow){
                // 使用array_merge构造新的$row
                $newrow = array_merge($newrow, array(
                        'job_create_time' => date('Y-m-d H:i:s'),
                        'job_creater' => $_SESSION["userinfo"]["uname"]
                ));
                // 调用父类(spModel)的create方法
                parent::create($newrow);
  }

没有返回值,那当然没有了。(就不太懂为什么说和例子代码一样,例子代码有重写create吗?)

解决方法: return parent::create($newrow);

2012-05-04 13:46:45