#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. Использование файла модели
Сначала создайте модель пользователя и укажите имя таблицы базы данных.
Вот образец файла модели:
<?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’)->>>Найди все();