Всем привет.
В спешке изучаю Yii2, MySQL, Docker и вообще Backend. Знаю что так лучше не делать, обещаю так не делать)) Столкнулся с такой проблемой.
Сделал конфиг - db.php. Написал файл миграции. Миграция выполняется успешно. Появляется новая таблица. Но как выполняю метод save из ActiveRecord, то подключение к базе данных не получается. В чём проблема
Сам Котроллер SiteController.php
namespace app\controllers;
use Yii;
use app\models\SignupForm;
use app\models\User;
use yii\web\Controller;
public function actionSignup(){
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new SignupForm();
if($model->load(\Yii::$app->request->post())){
$user = new User();
$user->username = $model->username;
$user->password = \Yii::$app->security->generatePasswordHash($model->password);
if($user->save()){
return $this->goHome();
}
}
return $this->render('signup', ['model' => $model ]);
}
Модель SignupForm.php
namespace app\models;
use yii\base\Model;
class SignupForm extends Model{
public $username;
public $password;
public function rules() {
return [
[['username', 'password'], 'required', 'message' => 'Заполните поле'],
];
}
public function attributeLabels() {
return [
'username' => 'Логин',
'password' => 'Пароль',
];
}
}
Миграция
use yii\db\Migration;
class m230916_135018_create_user_table extends Migration
{
public function safeUp()
{
$this->createTable('{{%users}}', [
'id' => $this->primaryKey(),
'username' => $this->string(256),
'role'=>$this->string(256)->defaultValue('user'),
'password'=>$this->string(256),
]);
}
public function safeDown()
{
$this->dropTable('{{%user}}');
}
}
Ошибка
Database Exception – yii\db\Exception
SQLSTATE[HY000] [2002] No such file or directory
Error Info: Array
(
[0] => HY000
[1] => 2002
[2] => No such file or directory
)
↵
Caused by: PDOException
SQLSTATE[HY000] [2002] No such file or directory
in /app/vendor/yiisoft/yii2/db/Connection.php at line 722
На всякий случай Docker
version: '3.9'
networks:
bridge:
driver: bridge
services:
php:
image: yiisoftware/yii2-php:8.1-apache
networks:
- bridge
links:
- mysql
volumes:
- ~/.composer-docker/cache:/root/.composer/cache:delegated
- ./:/app:delegated
ports:
- '8000:80'
environment:
- TZ=Europe/Moscow
- MYSQL_ROOT_PASSWORD=*Тут пароль1*
- MYSQL_DATABASE=*Тут bd1*
- MYSQL_USER=*Тут имя*
- MYSQL_PASSWORD=*Тут пароль2*
depends_on:
- mysql
mysql:
image: mysql:8.0
networks:
- bridge
ports:
- "3306:3306"
environment:
- TZ=Europe/Moscow
- MYSQL_ROOT_PASSWORD=*Тут пароль1*
- MYSQL_DATABASE=*Тут bd1*
- MYSQL_USER=*Тут имя*
- MYSQL_PASSWORD=*Тут пароль2*
phpmyadmin:
image: phpmyadmin/phpmyadmin
networks:
- bridge
restart: always
ports:
- 8080:80
volumes:
- ./db:/var/lib/mysql
environment:
- PMA_HOST=mysql
- MYSQL_ROOT_PASSWORD=*Тут пароль1*
- MYSQL_USER=*Тут имя*
- MYSQL_PASSWORD=*Тут пароль2*
depends_on:
- mysql