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); }
お力添えいただきたくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/01 05:16