-
karimm
Newbie
-
Posts: 4
Threads: 2
Joined: Apr 2022
Reputation:
0
Hi,
I'm on version 4.4.5 of Codeigniter and I have a problem with database fields being ignored with the save() function for Models. So with save(), the insert is done very well and the update too except for two fields "modifiedOn (datetime)" and 'modifiedBy (int) which do not fill up when I update the data.
Here is my model
PHP Code: namespace App\Models;
use CodeIgniter\Model;
class Tender_model extends Model { protected $DBGroup = 'default'; protected $table = 'tenders'; protected $primaryKey = 'id'; protected $useAutoIncrement = true; protected $insertID = 0; protected $returnType = 'array'; protected $useSoftDeletes = true; protected $protectFields = true; protected $allowedFields = ['id', 'title', 'typeId', 'serviceId', 'summaryMarket', 'isPublicMarket', 'estimatedDuration', 'estimatedAmount', 'executionPeriodFrom', 'executionPeriodTo', 'publicationDate', 'deliveryTenderDate', 'summaryExpectationsProviders', 'modalitySubmission', 'modifiedOn', 'modifiedBy', 'deletedOn', 'deletedBy', 'wp_id', 'owner', 'createdBy'];
// Dates protected $useTimestamps = false; protected $dateFormat = 'datetime'; protected $createdField = 'createdOn'; protected $updatedField = 'modifiedOn'; protected $deletedField = 'deletedOn';
// Validation protected $validationRules = []; protected $validationMessages = []; protected $skipValidation = false; protected $cleanValidationRules = true;
// Callbacks protected $allowCallbacks = true; protected $beforeInsert = []; protected $afterInsert = []; protected $beforeUpdate = []; protected $afterUpdate = []; protected $beforeFind = []; protected $afterFind = []; protected $beforeDelete = []; protected $afterDelete = []; }
Here is my controller, the useful functions
PHP Code: public function create() { //print_r($this->request->getPost()); // check file PDF only if($this->request->getPost()){ if (!empty($this->request->getPost('tenderId'))) { $primaryKey = 'id'; $data['id'] = $this->request->getPost('tenderId'); $data['modifiedBy'] = session('user')['peopleId']; $data['modifiedOn'] = date('Y-m-d H:i:s'); if(! empty($this->request->getPost('contactPeopleId'))) $data['owner'] = $this->request->getPost('contactPeopleId'); } else { $data['createdBy'] = session('user')['peopleId']; //$data['owner'] = (empty($this->request->getPost('contactPeopleId'))) ? $data['createdBy'] : $this->request->getPost('contactPeopleId'); } $data['title'] = $this->request->getPost('title'); $data['summaryMarket'] = $this->request->getPost('summaryMarket'); $data['isPublicMarket'] = $this->request->getPost('isPublicMarket'); $data['executionPeriodFrom'] = $this->request->getPost('executionPeriodFrom'); $data['executionPeriodTo'] = $this->request->getPost('executionPeriodTo'); $data['publicationDate'] = $this->request->getPost('publicationDate'); $data['estimatedDuration'] = $this->request->getPost('estimatedDuration'); $data['estimatedAmount'] = $this->request->getPost('estimatedAmount'); $data['deliveryTenderDate'] = $this->request->getPost('deliveryTenderDate'); $data['modalitySubmission'] = $this->request->getPost('depositMethod'); $data['serviceId'] = $this->request->getPost('serviceId'); $data['typeId'] = $this->request->getPost('typeId'); $data['countryId'] = $this->request->getPost('countryId'); $data['wp_id'] = (! empty($this->request->getPost('wp_id'))) ? $this->request->getPost('wp_id') : null; } print_r($data); $this->model->save($data); }
the print_r of $data
PHP Code: Array ( [id] => 587 [modifiedBy] => 8403 [modifiedOn] => 2024-04-09 20:35:11 [title] => Mission de consultance sur les consortiums/fusions [summaryMarket] =>
La mission de consultance a pour objectif de réaliser un état des lieux et d’accompagner ACODEV et ses membres afin de mieux comprendre les intentions du secteur et d’identifier les conditions et méthodes pour les appuyer dans d’éventuels processus de mise en place de consortium et/ou de mise en commun de services et/ou de fusions.Partie A : 1. Disposer d’une revue documentaire de la question 2. Disposer d’un état des lieux approfondi des intentions des membres d’ACODEV concernant la mise en place de consortiums et de fusions d’organisations ; 3. Animer un débat et/ou des travaux de groupes soit lors de l’assemblée générale d’ACODEV (juin) soit lors d’un autre atelier/événement spécifique (même période) qui aboutissent à une note de positionnement sur la question et/ou un mandat pour le secrétariat de la fédération Partie B : 4. Elaborer un rapport et un guide qui propose des méthode d’accompagnement des organisations souhaitant s’engager sur la voie d’un consortium ou d’une fusion 5. Mener éventuellement un coaching d’organisations souhaitant s’inscrire dans cette démarche [isPublicMarket] => 0 [executionPeriodFrom] => 2022-05-01 [executionPeriodTo] => 2022-10-31 [publicationDate] => 2022-04-01 [estimatedDuration] => 20 [estimatedAmount] => 199.99 [deliveryTenderDate] => 2022-04-26 [modalitySubmission] => 1 [serviceId] => 4 [typeId] => 6 [countryId] => 0 [wp_id] => 144 )
As you can see, the 2 problematic fields are present in $data. I checked the spelling in the database and it's ok there too. What concerns me is even if I put $allowedFields = [], the insertion and modification (except the 2 fields) work.
The debug gives me as query
PHP Code: UPDATE `tenders` SET `id` = '587', `title` = 'Mission de consultance sur les consortiums/fusions', `summaryMarket` = '<p>La mission de consultance a pour objectif de réaliser un état des lieux et d’accompagner ACODEV et ses membres afin de mieux comprendre les intentions du secteur et d’identifier les conditions et méthodes pour les appuyer dans d’éventuels processus de mise en place de consortium et/ou de mise en commun de services et/ou de fusions.Partie A : 1. Disposer d’une revue documentaire de la question 2. Disposer d’un état des lieux approfondi des intentions des membres d’ACODEV concernant la mise en place de consortiums et de fusions d’organisations ; 3. Animer un débat et/ou des travaux de groupes soit lors de l’assemblée générale d’ACODEV (juin) soit lors d’un autre atelier/événement spécifique (même période) qui aboutissent à une note de positionnement sur la question et/ou un mandat pour le secrétariat de la fédération Partie B : 4. Elaborer un rapport et un guide qui propose des méthode d’accompagnement des organisations souhaitant s’engager sur la voie d’un consortium ou d’une fusion 5. Mener éventuellement un coaching d’organisations souhaitant s’inscrire dans cette démarche</p>', `isPublicMarket` = '0', `executionPeriodFrom` = '2022-05-01', `executionPeriodTo` = '2022-10-31', `publicationDate` = '2022-04-01', `estimatedDuration` = '20', `estimatedAmount` = '199.99', `deliveryTenderDate` = '2022-04-26', `modalitySubmission` = '1', `serviceId` = '4', `typeId` = '6' WHERE `tenders`.`id` IN ('587')
The 2 fields are not in the query. There you go, I don't know what lead anymore, I can investigate.
Thanks in advance
|