質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2741閲覧

[PHP・Laravel・PostgreSQL]ユーザー登録できない

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/04/30 08:48

###前提・実現したいこと
ユーザー登録機能を実装中です。
ユーザー登録画面において、ユーザー名・メールアドエス・パスワードを入力して送信しましたが、エラーメッセージが表示されます。
問題なくユーザーを登録できるようにしたいです。

###発生している問題・エラーメッセージ

Illuminate\Database\QueryException could not find driver (SQL: select count(*) as aggregate from "users" where "name" = test)

###該当のソースコード
routes/web.php

PHP

1<?php 2 3Auth::routes(); 4Route::get('/', 'ArticleController@index');

app/Http/Controllers/Auth/RegisterController.php

PHP

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use App\Providers\RouteServiceProvider; 7use App\User; 8use Illuminate\Foundation\Auth\RegistersUsers; 9use Illuminate\Support\Facades\Hash; 10use Illuminate\Support\Facades\Validator; 11 12class RegisterController extends Controller 13{ 14 /* 15 |-------------------------------------------------------------------------- 16 | Register Controller 17 |-------------------------------------------------------------------------- 18 | 19 | This controller handles the registration of new users as well as their 20 | validation and creation. By default this controller uses a trait to 21 | provide this functionality without requiring any additional code. 22 | 23 */ 24 25 use RegistersUsers; 26 27 /** 28 * Where to redirect users after registration. 29 * 30 * @var string 31 */ 32 protected $redirectTo = RouteServiceProvider::HOME; 33 34 /** 35 * Create a new controller instance. 36 * 37 * @return void 38 */ 39 public function __construct() 40 { 41 $this->middleware('guest'); 42 } 43 44 /** 45 * Get a validator for an incoming registration request. 46 * 47 * @param array $data 48 * @return \Illuminate\Contracts\Validation\Validator 49 */ 50 protected function validator(array $data) 51 { 52 return Validator::make($data, [ 53 'name' => ['required', 'string', 'alpha_num', 'min:3', 'max:16', 'unique:users'], 54 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 55 'password' => ['required', 'string', 'min:8', 'confirmed'], 56 ]); 57 } 58 59 /** 60 * Create a new user instance after a valid registration. 61 * 62 * @param array $data 63 * @return \App\User 64 */ 65 protected function create(array $data) 66 { 67 return User::create([ 68 'name' => $data['name'], 69 'email' => $data['email'], 70 'password' => Hash::make($data['password']), 71 ]); 72 } 73}

resources/views/auth/register.blade.php

PHP

1@extends('app') 2 3@section('title', 'ユーザー登録') 4 5@section('content') 6 <div class="container"> 7 <div class="row"> 8 <div class="mx-auto col col-12 col-sm-11 col-md-9 col-lg-7 col-xl-6"> 9 <h1 class="text-center"><a class="text-dark" href="/">memo</a></h1> 10 <div class="card mt-3"> 11 <div class="card-body text-center"> 12 <h2 class="h3 card-title text-center mt-2">ユーザー登録</h2> 13 14 @include('error_card_list') 15 16 <div class="card-text"> 17 <form method="POST" action="{{ route('register') }}"> 18 @csrf 19 <div class="md-form"> 20 <label for="name">ユーザー名</label> 21 <input class="form-control" type="text" id="name" name="name" required value="{{ old('name') }}"> 22 <small>英数字316文字(登録後の変更はできません)</small> 23 </div> 24 <div class="md-form"> 25 <label for="email">メールアドレス</label> 26 <input class="form-control" type="text" id="email" name="email" required value="{{ old('email') }}"> 27 </div> 28 <div class="md-form"> 29 <label for="password">パスワード</label> 30 <input class="form-control" type="password" id="password" name="password" required> 31 </div> 32 <div class="md-form"> 33 <label for="password_confirmation">パスワード(確認)</label> 34 <input class="form-control" type="password" id="password_confirmation" name="password_confirmation" required> 35 </div> 36 <button class="btn btn-block blue-gradient mt-2 mb-2" type="submit">ユーザー登録</button> 37 </form> 38 39 <div class="mt-0"> 40 <a href="{{ route('login') }}" class="card-text">ログインはこちら</a> 41 </div> 42 43 </div> 44 </div> 45 </div> 46 </div> 47 </div> 48 </div> 49@endsection 50

###試したこと
マイグレーションできるか、確認しました。
$ docker-compose exec workspace php artisan migrate
問題なくマイグレーションが実行されました。

###補足情報(FW/ツールのバージョンなど)
PHP 8.0.3
Laravel 6.20.24
Docker 20.10.5
docker-compose 1.29.0
windowsを使用。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/04/30 09:09

could not find driver 結構よく見ると思いますが、調べても何も出てきませんでしたか? Laravelの問題ではないかと思います。
AbeTakashi

2021/04/30 10:27

Dockerを使ってるのであれば、docker-compose.yml、そこからDockerfileを読み出しているのであれば合わせてDockerfileも提示して頂ければ何か分かる人がいるかもしれません。migrationはできてるのにその後にcould not find driver出るのってちょっと不思議なんですよね。Dockerがらみのトラブルじゃないですかね?
退会済みユーザー

退会済みユーザー

2021/05/01 04:27

could not find driverで調べると、「マイグレーションができない」という内容ばかりなんですよね...... 私の場合はマイグレーションに問題はなかったので、解決法がわからず、質問をさせていただきました。 docker-compose.ymlとDockerfileを提示させていただきます。 docker-compose.yml version: "3" services: workspace: build: context: . dockerfile: ./docker/php-fpm/Dockerfile volumes: - ${APP_CODE_PATH_HOST}:/var/www/html/ php-fpm: build: context: . dockerfile: ./docker/php-fpm/Dockerfile ports: - 9000:9000 volumes: - ${APP_CODE_PATH_HOST}:/var/www/html/ nginx: image: nginx:alpine depends_on: - php-fpm ports: - ${NGINX_PORT}:80 volumes: - ${APP_CODE_PATH_HOST}:/var/www/html/ - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf postgres: image: postgres:${POSTGRES_VERSION}-alpine depends_on: - php-fpm ports: - ${POSTGRES_PORT}:5432 volumes: - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} mailhog: image: mailhog/mailhog ports: - 1025:1025 - 8025:8025 Dockerfile nginx FROM nginx:1.12 php-fpm FROM php:7.3-fpm RUN apt-get update && apt-get install -y --no-install-recommends \ libpq-dev \ libzip-dev \ postgresql \ python3 \ unzip \ && docker-php-ext-install \ pdo_pgsql \ sockets \ zip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* COPY --from=composer:1 /usr/bin/composer /usr/bin/composer COPY --from=node:14.2 /usr/local/bin /usr/local/bin COPY --from=node:14.2 /usr/local/lib /usr/local/lib WORKDIR /var/www/html
guest

回答1

0

ベストアンサー

pdo_pgsql ドライバーが入ってないと思うので、下記のコマンドで確認して pdo_pgsql ドライバインストールすると良さそうです。

$ php -m | grep pdo_pgsql

投稿2021/04/30 09:12

ucan-lab

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/30 09:32

こちらでもご返信ありがとうございます! windowsだとgrepが使えないみたいです。 代わりにfindというコマンドがあるので、 $ php -m | find "pdo_pgsql"や$ docker-compose exec php -m | find "pdo_pgsql" で実行してみましたが、特に何も起こりました。
ucan-lab

2021/04/30 11:00

Windows上ではなく、Dockerのphpコンテナ内で実行してください。 grep せずともいいですが、 pdo_pgsql が入っていなければインストールが必要です。 $ php -m
退会済みユーザー

退会済みユーザー

2021/05/01 04:18

コンテナ内で$ php -mを実行したところ、pdo_pgsqlをインストールされていることが確認できました。
ucan-lab

2021/05/03 10:00

他の質問を見て、DockerとXAMPPの環境をごっちゃにしているということなので、マイグレーションはコンテナ内のPHPを実行して、ウェブからのアクセスはXAMPPのPHPを実行しているのでdriverがないと怒られているのではないでしょうか? Docker、XAMPPどちらでも良いですが使わない方はアンインストールしてしまった方がシンプルになってわかりやすいのではないでしょうか。
退会済みユーザー

退会済みユーザー

2021/05/04 14:04

他の質問も見てくださったんですね。 ありがとうございます! 「マイグレーションはコンテナ内のPHPを実行して、ウェブからのアクセスはXAMPPのPHPを実行しているのでdriverがないと怒られているのではないでしょうか?」 おそらくその可能性が高いですね。 もともとXAMPPを使用しており、最近Dockerを学習し始めたので、開発環境も頭の中もごっちゃになってました。 今後はDockerをメインで進めていきたいと考えておりますので、XAMPPは削除することにします。 投稿した質問に関して、自分なりに調べて試してみましたが、結局解決法がどうしてもわからなかったので諦めます。 ゼロからアプリを始めた方が近道だと思ったので、最初から作り直してみようと思います。 あと、ucan-labさんのQiitaの記事(最強のLaravel開発~)について、非常にわかりやすくて、参考にさせていただいています。 まだまだわからない所が多いので、他の情報も参考にしつつ、Dockerの理解を深めていこうと考えています。 色々教えてくださってありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問