我最近开始使用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 }
这是我的表结构
请让我知道我哪里做错了。
3条答案
按热度按时间3pvhb19x1#
尝试使用以下内容更新模型:
这对我有用。
kmynzznz2#
我经常遇到这个问题,并且不得不提醒自己,在一些codeigniter系统中,datamapper会该高速缓存目录中创建文件,用于保存数据库表元数据。如果您向数据库添加了一列,那么如果缓存文件存在,它将不会自动被访问。
因此,在codeigniter中,转到app/cache目录并删除与表同名的文件。
r1zk6ea13#
对于当今面临这些问题的人们:尝试向表模型添加另一个属性primaryKey,如下所示:
'id';
它帮助了我。Codeigniter 4的保存()方法应该知道,什么列是你的键,特别是,如果列名不同于典型的'id'名称。在我的例子中,表的id正好是'user_id',这是一个问题。