ошибка в codeigniter 4 Вы должны указать таблицу базы данных, которая будет использоваться с вашим запросом

#codeigniter-4

Вопрос:

я работаю с codeigniter 4. я пытаюсь извлечь данные из базы данных, создав метод в модели, но получаю ошибку

Вы должны указать таблицу базы данных, которая будет использоваться с вашим запросом

даже я упомянул имя таблицы в построителе запросов. я не знаю, почему это происходит ? ниже приведен мой код

  public function Login($values)
    {
        $db = ConfigDatabase::connect();
  
        $result= $db->table('tbl_adminuser')
                     ->where(['username',$values['username']])
                     ->where(['password',$values['password']])
                     ->get()
                     ->getResult();
        print_r($result);
    }
 

Комментарии:

1. Пожалуйста, опубликуйте полную модель, о которой идет речь

Ответ №1:

Существует два типа получения данных из базы данных.

  1. Использование файла модели
  2. Загрузите базу данных в файл контроллера

Проверьте оба приведенных ниже типа, чтобы получить данные из базы данных.

1. Использование файла модели

Сначала создайте модель пользователя и укажите имя таблицы базы данных.

Вот образец файла модели:

 <?php 
namespace AppModels;
     
use CodeIgniterModel;
    
class UserMasterModel extends Model
{
    protected $table   = 'user_master';
}  
 

Затем создайте файл контроллера и загрузите модель с помощью use AppModelsUserMasterModel; .
Вы должны следовать приведенному ниже образцу файла контроллера, в котором упоминается загрузка модели и получение данных с помощью файла модели.

 <?php 
namespace AppControllers;
use CodeIgniterController;

use AppModelsUserMasterModel;

public function __construct()
{
    $this->db = ConfigDatabase::connect();
}

public function Login($values){
    $UserMasterModel = new UserMasterModel();
    $result = $UserMasterModel->where('username',$values['username'])
                                ->where('password',$values['password'])
                                ->findAll();
    print_r($result);
}
 

2. Загрузите базу данных в файл контроллера

При использовании ConfigDatabase::connect() контроллера файл выглядит следующим образом:

 <?php 
namespace AppControllers;
use CodeIgniterController;

public function __construct()
{
    $this->db = ConfigDatabase::connect();
    $this->user_master = $this->db->table('user_master');
}

public function Login($values){
    $this->user_master->select('*');
    $this->user_master->where('username',$values['username']);
    $this->user_master->where('password',$values['password']);
    $result = $this->user_master->get()->getResult();

    print_r($result);
}
 

Ответ №2:

создание модели для пользователей

 <?php namespace MythAuthModels;

use CodeIgniterModel;
use MythAuthAuthorizationGroupModel;
use MythAuthEntitiesUser;

class UserModel extends Model
{
    protected $table = 'users';
    protected $primaryKey = 'id';

    protected $returnType = User::class;
    protected $useSoftDeletes = false;

    protected $allowedFields = [
        'email', 'username', 'password_hash', 'reset_hash', 'reset_at', 'reset_expires', 'activate_hash',
        'status', 'status_message', 'active', 'force_pass_reset', 'permissions',
        'first_name',
        'last_name',
        'image',
        'address',
        'phone',
        'email',
        'gender',
        'country',
        'city',
        'created_at',
        'updated_at',
        'deleted_at',
    ];

    protected $useTimestamps = false;

    protected $validationRules = [
        'email' => 'if_exist|required|valid_email|is_unique[users.email,id,{id}]',
        'phone' => 'if_exist|required|is_unique[users.phone,id,{id}]',
        'username' => 'if_exist|required|alpha_numeric_punct|min_length[3]|max_length[30]|is_unique[users.username,id,{id}]',
        'password_hash' => 'if_exist|required',
    ];
    protected $validationMessages = [];
    protected $skipValidation = false;

    protected $afterInsert = ['addToGroup'];

    /**
     * The id of a group to assign.
     * Set internally by withGroup.
     *
     * @var int|null
     */
    protected $assignGroup;

    /**
     * Logs a password reset attempt for posterity sake.
     *
     * @param string $email
     * @param string|null $token
     * @param string|null $ipAddress
     * @param string|null $userAgent
     */
    public function logResetAttempt(string $email, string $token = null, string $ipAddress = null, string $userAgent = null)
    {
        $this->db->table('auth_reset_attempts')->insert([
            'email' => $email,
            'ip_address' => $ipAddress,
            'user_agent' => $userAgent,
            'token' => $token,
            'created_at' => date('Y-m-d H:i:s')
        ]);
    }

    /**
     * Logs an activation attempt for posterity sake.
     *
     * @param string|null $token
     * @param string|null $ipAddress
     * @param string|null $userAgent
     */
    public function logActivationAttempt(string $token = null, string $ipAddress = null, string $userAgent = null)
    {
        $this->db->table('auth_activation_attempts')->insert([
            'ip_address' => $ipAddress,
            'user_agent' => $userAgent,
            'token' => $token,
            'created_at' => date('Y-m-d H:i:s')
        ]);
    }

    /**
     * Sets the group to assign any users created.
     *
     * @param string $groupName
     *
     * @return $this
     */
    public function withGroup(string $groupName)
    {
        $group = $this->db->table('auth_groups')->where('name', $groupName)->get()->getFirstRow();

        $this->assignGroup = $group->id;

        return $this;
    }

    /**
     * Clears the group to assign to newly created users.
     *
     * @return $this
     */
    public function clearGroup()
    {
        $this->assignGroup = null;

        return $this;
    }

    /**
     * If a default role is assigned in ConfigAuth, will
     * add this user to that group. Will do nothing
     * if the group cannot be found.
     *
     * @param mixed $data
     *
     * @return mixed
     */
    protected function addToGroup($data)
    {
        if (is_numeric($this->assignGroup)) {
            $groupModel = model(GroupModel::class);
            $groupModel->addUserToGroup($data['id'], $this->assignGroup);
        }

        return $data;
    }


}

 

тоже используйте модель

$модель = новая модель пользователя();

$модель->asObject()->>где(‘активный’, ‘1’)->>>Найди все();