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

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

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

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

PHP

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Eloquent

Eloquentとは、PHPフレームワークのLaravelに最初から含まれているORM(Object-relational mapping:オブジェクト関係マッピング)です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1403閲覧

ReactでLaravelのAPIを叩けない。

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

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

PHP

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Eloquent

Eloquentとは、PHPフレームワークのLaravelに最初から含まれているORM(Object-relational mapping:オブジェクト関係マッピング)です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

1クリップ

投稿2019/08/28 06:41

編集2019/08/28 07:09

前提・実現したいこと

ReactとLaravelを使った簡単なアプリケーションを作成しています。
具体的には、LaravelでAPIを作成し、ReactのaxiosでAPIを叩いて取得内容を画面に表示するというものです。
APIはMySQLからEloquntを使用してデータを全件取得し、そのデータを返します。
しかし、axiosでAPIにアクセスすると500エラーが返ってきます。
色々試しましたが一向に解決しません。
開発環境の構築にはDockerを使用しています。
どなたか解決方法のご教授お願い致します。

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

Illuminate\Database\QueryException: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: select * from `posts`) in file /Users/kondohiroki/php/to/summer_work/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664 Caused by PDOException: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known in file /Users/kondohiroki/php/to/summer_work/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php on line 70 Caused by PDOException: PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known in file /Users/kondohiroki/php/to/summer_work/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php on line 70 Stack trace:

該当のソースコード

Docker

1version: '3' 2services: 3 nginx: 4 container_name: nginx 5 build: 6 context: ./docker/nginx 7 dockerfile: Dockerfile 8 ports: 9 - 8080:80 10 volumes: 11 - ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf 12 - ./to:/var/www/html 13 depends_on: 14 - php 15 16 php: 17 container_name: php 18 build: 19 context: ./docker/php 20 dockerfile: Dockerfile 21 volumes: 22 - ./to:/var/www/html 23 depends_on: 24 - db 25 26 db: 27 container_name: mysql 28 build: 29 context: ./docker/mysql 30 dockerfile: Dockerfile 31 ports: 32 - 3306:3306 33 volumes: 34 - ./docker/mysql/data:/var/lib/mysql 35 - ./docker/mysql/:/etc/mysql/conf.d/ 36 command: 37 - --default-authentication-plugin=mysql_native_password 38 environment: 39 MYSQL_ROOT_PASSWORD: secret

Laravel

1/** 2 * .env 3 */ 4APP_NAME=Laravel 5APP_ENV=local 6APP_KEY=base64:cLlHR9HwX3wd/YIaNy408bZEEOmWCFFlhteOhQMgRLA= 7APP_DEBUG=true 8APP_URL=http://localhost 9 10LOG_CHANNEL=stack 11 12DB_CONNECTION=mysql 13DB_HOST=db 14DB_PORT=3306 15DB_DATABASE=summer_work 16DB_USERNAME=root 17DB_PASSWORD=secret 18 19BROADCAST_DRIVER=log 20CACHE_DRIVER=file 21QUEUE_CONNECTION=sync 22SESSION_DRIVER=file 23SESSION_LIFETIME=120 24 25REDIS_HOST=127.0.0.1 26REDIS_PASSWORD=null 27REDIS_PORT=6379 28 29MAIL_DRIVER=smtp 30MAIL_HOST=smtp.mailtrap.io 31MAIL_PORT=2525 32MAIL_USERNAME=null 33MAIL_PASSWORD=null 34MAIL_ENCRYPTION=null 35 36AWS_ACCESS_KEY_ID= 37AWS_SECRET_ACCESS_KEY= 38AWS_DEFAULT_REGION=us-east-1 39AWS_BUCKET= 40 41PUSHER_APP_ID= 42PUSHER_APP_KEY= 43PUSHER_APP_SECRET= 44PUSHER_APP_CLUSTER=mt1 45 46MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" 47MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 48 49 50 51/** 52 * routes/api.php 53 */ 54Route::group(['middleware' => 'api'], function () { 55 Route::get('v1/posts', 'PostController@getPost'); 56}); 57 58 59 60/** 61 * app/Http/Controllers/PostController.php 62 */ 63<?php 64 65namespace App\Http\Controllers; 66 67use App\Post; 68 69class PostController extends Controller 70{ 71 // getPost 72 public function getPost() 73 { 74 $posts = Post::all(); 75 76 return $posts; 77 } 78} 79 80 81 82/** 83 * app/Post.php 84 */ 85<?php 86 87namespace App; 88 89use Illuminate\Database\Eloquent\Model; 90 91class Post extends Model 92{ 93}

React

1export const getPosts = () => { 2 return (dispatch) => { 3 dispatch(getPostsRequest()) 4 return axios.get(`api/v1/posts`) 5 .then(res => 6 dispatch(getPostsSuccess(res.data)) 7 ).catch(err => 8 dispatch(getPostsFailure(err)) 9 ) 10 } 11}

試したこと

マイグレーションやTinkerを使用したDB操作はできます。
PostContoroller.phpをDB操作ではなく単純な連想配列を返すように変更しても機能しました。
Eloquentを使用してDB操作をした場合だけ500エラーが出ます。

補足情報(FW/ツールのバージョンなど)

Laravel 5.8.33

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/08/28 06:56

Laravelのバージョンを具体的に記載しましょう。
退会済みユーザー

退会済みユーザー

2019/08/28 07:05

編集しました!
guest

回答1

0

ベストアンサー

マイグレーションやTinkerを使用したDB操作はできます。

が気になりますが

この手のエラーは十中八九DBへの接続エラーです。
より具体的には、DBサーバの名前解決に失敗しています。

投稿2019/08/28 08:21

mikkame

総合スコア5036

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

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

退会済みユーザー

退会済みユーザー

2019/08/28 08:38 編集

ご回答ありがとう御座います! Eloquentを使用した時だけエラーが出るのが本当に謎です…。 他はDB接続できるので、Laravelの.envの設定は間違っていないと私は思うんです。 Dockerで環境構築しているので、何かその影響が出ているとかでしょうか…。
mikkame

2019/08/28 09:25 編集

docker-compose exec php bash 内で ping db で疎通できるという事ですよね? また、artisan migrate および tinkerで操作しても特段問題ないという事ですよね・・・ であれば、php artisan serve をホスト上で実行している、ぐらいしか思いつかないですね。 愚直にエラーを読むと回答通りです。(ポート違いだったらtimeoutになるはずだし、php_network_getaddressesの場合はほぼほぼ名前解決)
退会済みユーザー

退会済みユーザー

2019/08/28 10:46

php artisan serveをホスト上で実行していたものをコンテナ内で実行し、ポートフォワードしたところ無事表示されました! 当方、DockerもLaravelも初心者なものでそこまで理解が及んでいませんでした…。 精進致します…。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問