为了账号安全,请及时绑定邮箱和手机立即绑定

出现错误:CodeIgniter\Database\BaseResult::getResult

出现错误:CodeIgniter\Database\BaseResult::getResult

PHP
PIPIONE 2023-08-11 16:30:23
我正在尝试使用 CodeIgniter 4 crud 函数 findAll ,并且收到传递给 CodeIgniter\Database\BaseResult::getResult() 的错误参数 1,如下所示:这是我的模型<?php namespace App\Models\Admin\User_management;use CodeIgniter\Model;class UsuariosModel extends Model{        protected $table = 'users';    protected $primaryKey = 'user_id';        protected $returnType = 'array';    protected $allowedFields = ['user_login', 'user_psw', 'user_full_name', 'user_email', 'user_telef', 'user_image', 'user_date_of_birth', 'user_gender', "user_created_at", "user_updated_at", "user_deleted_at"];    protected $useTimestamps = true;    protected $useSoftDeletes = true;    protected $createdField  = 'user_created_at';    protected $updatedField  = 'user_updated_at';    protected $deletedField  = 'user_deleted_at';这是我的控制器 public function delete_users(){        //$this->validateViewUserData();        //$user_id = $this->request->getVar('user_id', FILTER_SANITIZE_STRING);        //$this->deleteUsers($user_id);                        $user_model = new UsuariosModel();                $users = $user_model->findAll();    }DROP TABLE IF EXISTS `users`;CREATE TABLE IF NOT EXISTS `users` (  `user_id` int(11) NOT NULL AUTO_INCREMENT,  `user_login` varchar(40) NOT NULL,  `user_psw` varchar(255) NOT NULL,  `user_full_name` varchar(100) NOT NULL,  `user_email` varchar(80) NOT NULL,  `user_telef` int(16) NOT NULL,  `user_image` varchar(255) DEFAULT NULL,  `user_created_at` datetime NOT NULL,  `user_updated_at` datetime DEFAULT NULL,  `user_deleted_at` datetime DEFAULT NULL,  `user_date_of_birth` date NOT NULL,  `user_gender` int(1) NOT NULL,  PRIMARY KEY (`user_id`)) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8;其他粗略的功能,如更新、保存、删除,运行良好,只有当我使用 find() 或 findAll() 时,它们在控制器和模型本身中不起作用
查看完整描述

6 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我也遇到过同样的问题。要解决这个问题,您需要在您正在使用的模型构造函数中调用基类构造函数:parent:__construct();



查看完整回答
反对 回复 2023-08-11
?
达令说

TA贡献1821条经验 获得超6个赞

<?php 

namespace App\Models\Admin\User_management;

use CodeIgniter\Model;


class UsuariosModel extends Model

{

    

    protected $table = 'users';

    protected $primaryKey = 'user_id';

    

    protected $returnType = 'array';


    protected $allowedFields = ['user_login', 'user_psw', 'user_full_name', 'user_email', 'user_telef', 'user_image', 'user_date_of_birth', 'user_gender', "user_created_at", "user_updated_at", "user_deleted_at"];


    protected $useTimestamps = true;

    protected $useSoftDeletes = true;


    protected $createdField  = 'user_created_at';

    protected $updatedField  = 'user_updated_at';

    protected $deletedField  = 'user_deleted_at';

    

    

 public function __construct(){

 parent::__construct();

 $db = \Config\Database::connect();

 $this->builder = $db->table('NAME OF THE TABLE');

}   


查看完整回答
反对 回复 2023-08-11
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

Codeigniter 4 在模型上预定义了变量,但其中很少有只需要true或fals,您只需要小心使用它们即可:


这些是以下定义的变量,其protected范围为model:


protected $table = '';

protected $primaryKey = 'id';

protected $useAutoIncrement = true;

protected $returnType = 'array';

protected $useSoftDeletes = true;

protected $allowedFields = [];

protected $useTimestamps = false;

protected $createdField = 'created_at';

protected $updatedField = 'updated_at';

protected $deletedField = 'deleted_at';

protected $validationRules = [];

protected $validationMessages = [];

protected $skipValidation = false;

试试这个:


change $useSoftDeletes value from `true` to `false` 

    

并运行,如果它解决了您的问题,则无需执行任何其他操作。如果这不能帮助解决问题,则注释这些所有变量,仅取消注释,$table然后$allowedFields刷新页面(如果它解决了问题),然后一一检查其余boolean情况true,或者false可能是其中一个真正的问题。就我而言,我遇到了这个问题。


Note: 另请记住一件事,如果您使用构造函数方法controller或model然后必须调用parent::__construct();其他方法,则会出现此错误:


>     TypeError

>     CodeIgniter\Database\BaseResult::getResult(): Argument #1 ($type) must be of type string, null given, called in



查看完整回答
反对 回复 2023-08-11
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

谢谢大家,我发现了这个问题,在我的模型中我正在使用构造函数, public function __construct(){ $this->DB = \Config\Database::connect(); $this->BUILDER = $this->DB->table($this->table);  } 我删除了它,现在 find 和 findAll 正在工作



查看完整回答
反对 回复 2023-08-11
?
森栏

TA贡献1810条经验 获得超5个赞

使用了以下方法


public function __construct() 

{

    parent::__construct();


    //other constructor code here

}

我希望这对其他人有帮助。


查看完整回答
反对 回复 2023-08-11
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

最有可能是由于模型文件或控制器文件中的构造函数存在问题。只要检查一下即可。使用下面的代码。不要在模型文件中使用任何构造函数。


模型视图


class UsuariosModel extends Model

{

    

    protected $table = 'users';

    protected $primaryKey = 'user_id';

    

    protected $returnType = 'array';


    protected $allowedFields = ['user_login', 'user_psw', 'user_full_name', 'user_email', 'user_telef', 'user_image', 'user_date_of_birth', 'user_gender', "user_created_at", "user_updated_at", "user_deleted_at"];


    protected $useTimestamps = true;

    protected $useSoftDeletes = true;


    protected $createdField  = 'user_created_at';

    protected $updatedField  = 'user_updated_at';

    protected $deletedField  = 'user_deleted_at';

}

在控制器中


use App\Models\UsuariosModel;


$myObject = new UsuariosModel()

$query  = $myObject->findAll();


echo '<pre>';

print_r($query);

exit;


查看完整回答
反对 回复 2023-08-11
  • 6 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信