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

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

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

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

PHP

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1505閲覧

curlコマンドでAPI実行したい。

kani-toto

総合スコア16

Laravel

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

PHP

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/07/01 04:40

PHPフレームワーク Laravel Webアプリケーション開発 5.5LTSの書籍でLaravelを勉強しています。
Virtualbox,Vagrant,Homestead
vagrant upはしています。

5-5-2リポジトリパターンの実装の章で、favoritestableを作りmigrateしてDBに反映しました。
model Favoriteを作り、

<?php declare(strict_types=1); namespace App\DataProvider\Eloquent; use Illuminate\Database\Eloquent\Model; class Favorite extends Model { protected $fillable = [ 'book_id', 'user_id', 'created_at' ]; }

FavoriteServiceクラス、

<?php declare(strict_types=1); namespace App\Services; use App\DataProvider\Eloquent\Favorite; class FavoriteService { public function switchFavorite(int $bookId, int $userId, string $createdAt) : int { return \DB::transaction( function () use ($bookId, $userId, $createdAt) { $count = Favorite::where('book_id', $bookId) ->where('user_id', $userId) ->count(); if ($count == 0) { Favorite::create([ 'book_id' => $bookId, 'user_id' => $userId, 'created_at' => $createdAt ]); return 1; } Favorite::where('book_id', $bookId) ->where('user_id', $userId) ->delete(); return 0; } ); } }

コントローラークラス(FavoriteAction)

<?php declare(strict_types=1); namespace App\Http\Controllers; use App\Services\FavoriteService; use Illuminate\Http\Request; use Carbon\Carbon; use Symfony\Component\HttpFoundation\Response; class FavoriteAction extends Controller { private $favorite; public function __construct(FavoriteService $favorite) { $this->favorite = $favorite; } public function switchFavorite(Request $request) { $this->favorite->switchFavorite( (int)$request->get('book_id'), (int)$request->get('user_id', 1), Carbon::now()->toDateTimeString() ); return response('', Response::HTTP_OK); } }

を作り、
routes/api.phpに

Route::post('/action/favorite', 'FavoriteAction@switchFavorite');

その後動作確認のためにGitbashで

$ curl -f 'http://homestead.test/api/action/favorite' --request POST --data 'book_id=1&user_id=2' --write-out '%{http_code}\n'200

実行すると

% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 19 0 0 100 19 0 37 --:--:-- --:--:-- --:--:-- 38500 200 curl: (22) The requested URL returned error: 500 Internal Server Error

サーバーエラーになってしまします。
-f オプションを入れないと上のほうには、

PDOException: SQLSTATE[HY000] [2002] Connection refused in file /home/vagrant/code/sampleapp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php on line 67

・・・上記のファイル確認しましたが何をすればいいかわからず、↓ ↓ ↓67行目付近

protected function createPdoConnection($dsn, $username, $password, $options) { if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) { return new PDOConnection($dsn, $username, $password, $options); } return new PDO($dsn, $username, $password, $options); }

お力添えいただきたくお願い申し上げます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Connection refused は「連結が却下された」という意味です。データベースの設定にusernameやpasswordとか正しく設定していますかを確認してください。

投稿2020/07/01 04:49

YufanLou

総合スコア464

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

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

kani-toto

2020/07/01 05:16

4時間ぐらい格闘してました。ありがとうございます。解決しました。以前にmigrateできなくてDB_PORTを変更していました。そこを元に戻したら解決しました。 神です。ありがとうございます。また何かありましたらお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問