codeigniter $this->保存()不工作

cngwdvgl  于 2022-12-07  发布在  其他
关注(0)|答案(3)|浏览(143)

我最近开始使用codeigniter。试图为一个新的表创建一个新的模型。看起来保存()方法不能正常工作。我不能在我的表中看到新的记录。我在net和stackoverflow上做了一些研究,但是没有用。有人能检查我的代码和建议吗?

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2 
  3 class Listing_Price_History extends DataMapper
  4 {
  5 
  6     var $table = 'listing_price_history';
  7     var $primary_key = 'id';
  8     var $primary_key_suffix = '_uid';
  9 
 10 
 11     // --------------------------------------------------------------------
 12         /** Validations for the requried fields */
 13     var $validation = array(
 14         'listing_id' => array(
 15                 'label' => 'Listing Id',
 16                 'rules' => array('required')
 17         ),
 18         'price_per_sqft' => array(
 19                 'label' => 'Price per square feet',
 20                 'rules' => array('required')
 21         )
 22     );
 23 
 24     // --------------------------------------------------------------------
 25 
 26     public function __construct() {
 27         parent::__construct();
 28         $CI =& get_instance();
 29         $CI->load->library('uuid');
 30         $this->uuid = $CI->uuid;
 31         $CI->load->helper('company');
 32 
 33     }
 34 
 35     // --------------------------------------------------------------------
 36 
 37     // --------------------------------------------------------------------
 38 
 39     /**
 40      * Create listing entry
41      *
 42      * @return bool
 43      **/
 44     public function savePriceHistory($history) {
 45           //  var_dump($history); 
 46           //  var_dump($this);
 47             if(isset($history['listing_id']))
 48               $this->listing_id = $history['listing_id'];
 49             if(isset($history['price_per_sqft']))
 50               $this->price_per_sqft = $history['price_per_sqft'];
 51             $date = date('Y-m-d H:i:s');
 52             $this->created_by = $this->uuid;
 53             $this->created_date = $date;
 54             $save_history = $this->save();
 55           //  var_dump($this->check_last_query());
 56           //  var_dump($this->db->_error_message());
 57           //  var_dump($this->db->_error_number());
 58           //  var_dump($save_history);
 59     }
 60 }
                                                                                                                              60,1          Bot

控制器:这就是我如何调用模型

432             if($status){
 433               echo "Entered";
 434               $price_history = new Listing_Price_History();
 435               $save_history =  $price_history->savePriceHistory($history);
 436               echo $save_history;
 437               echo "Finished";
 438             }

这是我的表结构

请让我知道我哪里做错了。

3pvhb19x

3pvhb19x1#

尝试使用以下内容更新模型:

protected $useAutoIncrement = false;

这对我有用。

kmynzznz

kmynzznz2#

我经常遇到这个问题,并且不得不提醒自己,在一些codeigniter系统中,datamapper会该高速缓存目录中创建文件,用于保存数据库表元数据。如果您向数据库添加了一列,那么如果缓存文件存在,它将不会自动被访问。
因此,在codeigniter中,转到app/cache目录并删除与表同名的文件。

r1zk6ea1

r1zk6ea13#

对于当今面临这些问题的人们:尝试向表模型添加另一个属性primaryKey,如下所示:
'id';
它帮助了我。Codeigniter 4的保存()方法应该知道,什么列是你的键,特别是,如果列名不同于典型的'id'名称。在我的例子中,表的id正好是'user_id',这是一个问题。

相关问题