souwasora
@souwasora (takei souwa)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Laravel db接続

解決したいこと

dockerを使いLaravelで自作アプリを作成しています。
ユーザー新規登録画面でフォームに入力した値をmysqlに保存したい
解決方法を教えて下さい。

発生している問題・エラー

新規登録画面で入力した名前などは以下分で表示はできる

public function create(Request $request)
    {
        // 作成した内容を受け取って変数
        $first_name = $request->input('first_name');
        $last_name = $request->input('last_name');
以下省略

image.png

web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\AuthController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

// ログイン画面
Route::get('/', [AuthController::class, 'showLogin'])->name('showLogin');

// 新規ユーザー作成画面
Route::get('showSignup', [AuthController::class, 'showSignup'])->name('showSignup');

// ログイン処理
Route::post('login', [AuthController::class, 'login'])->name('login');

// 新規作成処理
Route::post('create', [AuthController::class, 'create'])->name('create');

// ログイン後遷移
Route::get('home', function () {
    return view('home');
})->name('home');

// 新規作成後遷移
Route::get('top', function () {
    return view('top');
})->name('top');

AuthController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
// バリデーション
use App\Http\Requests\LoginFormRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\User;

class AuthController extends Controller
{
    public function showSignup()
    {
        return view('login.signup');
    }
    public function showLogin()
    {
        return view('login.login');
    }
    // signup
    public function create(Request $request)
    {
        // 作成した内容を受け取って変数
        $first_name = $request->input('first_name');
        $last_name = $request->input('last_name');
        $first_name_kana = $request->input('first_name_kana');
        $last_name_kana = $request->input('last_name_kana');
        $postal_code = $request->input('postal_code');
        $address = $request->input('address');
        $telephone_number = $request->input('telephone_number');
        $gender = $request->input('gender');
        $email = $request->input('email');
        // 変数を返す
        return view('top')->with([
            "first_name" => $first_name,
            "last_name" => $last_name,
            "first_name_kana" => $first_name_kana,
            "last_name_kana" => $last_name_kana,
            "postal_code" => $postal_code,
            "address" => $address,
            "telephone_number" => $telephone_number,
            "gender" => $gender,
            "email" => $email
        ]);
    }
    public function store(Request $request)
    {
        //インスタンス作成
        $user = new User();
        $user->last_name = $request->last_name;
        $user->save();
    }
    public function login(LoginFormRequest $request)
    {
        $credentials = $request->only('email', 'password');

        // ログイン確認
        if (Auth::attempt($credentials)) {
            $request->session()->regenerate();
            // ホーム画面に遷移
            return redirect('home')->with('login_success', 'ログイン成功しました!');
        }

        return back()->withErrors([
            'login_error' => 'メールアドレスかパスワードが間違っています.',
        ]);
    }
}

signup.blade.php

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>新規作成画面</title>
  <!-- Scripts -->
  <script src="{{ asset('js/app.js') }}" defer></script>
  <!-- styles -->
  <link href="{{ asset('css/app.css') }}" rel="stylesheet">
  <!-- <link href="{{ asset('css/signup.css') }}" rel="stylesheet"> -->
</head>
<body>
  <div class="container">
    <form class="form-signin" method="POST" action="{{ route('create') }}">@csrf
      <h1 class="h3 mb-3 font-weight-normal">新規作成画面</h1>
        <div class="form-row">
          <div class="form-group">
            @if ($errors->any())
              <div class="alert alert-danger">
                  <ul>
                      @foreach ($errors->all() as $error)
                          <li>{{ $error }}</li>
                      @endforeach
                  </ul>
              </div>
            @endif
            <label for="inputFirst_name">苗字(漢字)</label>
            <input type="first_name" class="form-control" id="inputFirst_name" name="first_name" placeholder="山田" required>
          </div>
          <div class="form-group">
            <label for="inputLast_name">名前(漢字)</label>
            <input type="last_name" class="form-control" id="inputLast_name" name="last_name" placeholder="太郎" required>
          </div>
          <div class="form-group">
            <label for="inputFirst_name_kana">苗字(カナ)</label>
            <input type="first_name_kana" class="form-control" id="inputFirst_name_kana" name="first_name_kana" placeholder="ヤマダ" required>
          </div>
          <div class="form-group">
            <label for="inputLast_name_kana">名前(カナ)</label>
            <input type="last_name_kana" class="form-control" id="inputLast_name_kana" name="last_name_kana" placeholder="タロウ" required>
          </div>
          <div class="form-group">
            <label for="inputPostal_code">郵便番号</label>
            <input type="postal_code" class="form-control" id="postal_code" name="postal_code" placeholder="1234567" required> 
          </div>
          <div class="form-group">
            <label for="inputAddress">住所</label>
            <input type="address" class="form-control" id="address" name="address" placeholder="東京都港区南青山5丁目8−8 金子ビル 1F" required>
          </div>
          <div class="form-group">
            <label for="inputTelephone_number">電話番号</label>
            <input type="telephone_number" class="form-control" id="telephone_number" name="telephone_number" placeholder="09012345678" required>
          </div>
          <div class="form-group">
            <label>性別</label>
            <div class="form-check form-check-inline">
              <input class="form-check-input" type="radio" id="gender" name="gender" value="1" >
              <label class="form-check-label" for="inlineRadio01">男性</label>
            </div>
            <div class="form-check form-check-inline">
              <input class="form-check-input" type="radio" id="gender" name="gender" value="2" >
              <label class="form-check-label" for="inlineRadio01">女性</label>
            </div>
            <div class="form-check form-check-inline">
              <input class="form-check-input" type="radio" id="gender" name="gender" value="3" >
              <label class="form-check-label" for="inlineRadio01">どちらでもない</label>
            </div>
          </div>
          <div class="form-group">
            <label for="inputEmail">Email</label>
            <input type="email" class="form-control" id="inputEmail" name="email" placeholder="Email" required autofocus>
          </div>
          <div class="form-group">
            <label for="inputPassword4">Password</label>
            <input type="password" class="form-control" id="inputPassword4" placeholder="Password" required>
          </div>
        </div>
        <button class="btn btn-lg btn-primary btn-block" type="submit">新規登録</button>
    </form>
  </div>
</body>
</html>

テーブルはきちんとありカラムも表示されます。
image.png

中身は0
image.png

自分で試したこと

public function store(Request $request)の記載でダメだったので、なにをしたらmysqlの方にデータが入力されるのか分かりません。
アドバイスお願い致します。
データ名 instant
テーブル名 users

0

1Answer

createアクションでuserをnewして

$user->first_name = $first_name;
...

てやって最後に

$user->save();

で登録できませんか?
できなければ設定が間違っている気が。

0Like

Comments

  1. @souwasora

    Questioner

    ありがとうございます。

Your answer might help someone💌