Premise
I did success connect to database via local server.
I understand basic of codeigniter4.
![image](https://user-images.githubusercontent.com/19668980/133968522-63b19702-7a90-4968-9253-14aebabe6a13.png)
step1 docker-compose.yml
I'm changed port for codeigniter4_mysql because the port conflicts with the local MySQL.
version: "3"
services:
#--------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
# C O D E I G N I T E R v4.1.4 #
#--------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
codeigniter4:
image: atsanna/codeigniter4:latest
container_name: 'codeigniter4'
ports:
- 80:80
links:
- codeigniter4_mysql
volumes:
- ./localfolder/www:/var/www/html
#--------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
# M Y S Q L #
#--------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
codeigniter4_mysql:
image: mariadb:10.5.5
container_name: 'codeigniter4_mysql'
ports:
- 3307:3306
volumes:
- ./localfolder/mysql:/var/lib/mysql
- ./localfolder/logs/mysql:/var/log/mysql
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: codeigniter4
MYSQL_USER: codeigniter4
MYSQL_PASSWORD: codeigniter4
#--------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
# P H P M Y A D M I N #
#--------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
codeigniter4_phpmyadmin:
image: phpmyadmin/phpmyadmin:5.0.2
container_name: 'codeigniter4_phpmyadmin'
links:
- codeigniter4_mysql
environment:
PMA_HOST: codeigniter4_mysql
PMA_PORT: 3306
ports:
- 81:80
volumes:
- ./localfolder/sessions:/sessions
it's ok!
![image](https://user-images.githubusercontent.com/19668980/133973466-8cc59a05-cd08-4a0d-a76d-088e78dfd052.png)
step2 connect to database
// localfolder/www/codeigniter4/.env
database.default.hostname = codeigniter4_mysql
database.default.database = codeigniter4
database.default.username = codeigniter4
database.default.password = codeigniter4
database.default.DBDriver = MySQLi
Some values are in Japanese, but please focus to the numbers.
CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL DEFAULT 0,
`name` VARCHAR(32) NULL DEFAULT NULL,
`age` INT UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `user_id` (`user_id`)
);
INSERT INTO `codeigniter4`.`users` (`user_id`, `name`, `age`)
VALUES
(100, '屋代駿介', 35),
(101, '須加友枝', 29),
(102, '永来一八', 15),
(103, '荷宮知愛', NULL);
create a entity
> php spark make:entity
Entity class name: User
File created: APPPATH\Entities\User.php
I append cast information.
protected $casts = [
'id' => 'integer',
'user_id' => 'integer',
'age' => '?integer',
];
create a model.
no edit.
> php spark make:model
Model class name: UserModel
File created: APPPATH\Models\UserModel.php
step3 Editing Controller
it's simple
<?php
namespace App\Controllers;
use App\Models\UserModel;
class Home extends BaseController
{
public function index($userId)
{
$userModel = new UserModel();
$user = $userModel->where('user_id', $userId);
d($user);
d($user->id);
d($user->user_id);
d($user->name);
d($user->age);
return view('welcome_message');
}
}
retrieve is failed. What may be the cause.
![image](https://user-images.githubusercontent.com/19668980/133975068-ac718b7f-031b-4893-9d3f-2ade4935d903.png)
problem
What I'm curious about is that the connection information is null
![image](https://user-images.githubusercontent.com/19668980/133975728-99364f17-8380-471e-b495-c80b1177e34d.png)
I'm also worried that migrate cannot be executed. Please let me know if you can understand anything. thank you. :)
localfolder\www\codeigniter4> php spark migrate
CodeIgniter v4.1.4 Command Line Tool - Server Time: 2021-09-20 03:17:33 UTC-05:00
Running all new migrations...
[CodeIgniter\Database\Exceptions\DatabaseException]
Unable to connect to the database.
Main connection [MySQLi]: php_network_getaddresses: getaddrinfo failed: ̂悤ȃzXg͕słB
at SYSTEMPATH\Database\BaseConnection.php:400
Backtrace:
1 SYSTEMPATH\Database\BaseConnection.php:570
CodeIgniter\Database\BaseConnection()->initialize()
2 SYSTEMPATH\Database\BaseConnection.php:1320
CodeIgniter\Database\BaseConnection()->query('SHOW TABLES FROM `codeigniter4`')
3 SYSTEMPATH\Database\BaseConnection.php:1351
CodeIgniter\Database\BaseConnection()->listTables()
4 SYSTEMPATH\Database\MigrationRunner.php:754
CodeIgniter\Database\BaseConnection()->tableExists('migrations')
5 SYSTEMPATH\Database\MigrationRunner.php:166
CodeIgniter\Database\MigrationRunner()->ensureTable()
6 SYSTEMPATH\Commands\Database\Migrate.php:84
CodeIgniter\Database\MigrationRunner()->latest(null)
7 SYSTEMPATH\CLI\Commands.php:63
CodeIgniter\Commands\Database\Migrate()->run([])
8 SYSTEMPATH\CLI\CommandRunner.php:70
CodeIgniter\CLI\Commands()->run('migrate', [])
9 SYSTEMPATH\CLI\CommandRunner.php:56
CodeIgniter\CLI\CommandRunner()->index([])
10 SYSTEMPATH\CodeIgniter.php:800
CodeIgniter\CLI\CommandRunner()->_remap('index', 'migrate')
11 SYSTEMPATH\CodeIgniter.php:399
CodeIgniter\CodeIgniter()->runController(Object(CodeIgniter\CLI\CommandRunner))
12 SYSTEMPATH\CodeIgniter.php:317
CodeIgniter\CodeIgniter()->handleRequest(null, Object(Config\Cache), false)
13 SYSTEMPATH\CLI\Console.php:48
CodeIgniter\CodeIgniter()->run()
14 ROOTPATH\spark:63
CodeIgniter\CLI\Console()->run()