Auth::id();でユーザーIDが取得できない
解決したいこと
Auth::id();でユーザーIDが取得できるようになりたいです。
お知恵をお貸し頂けますと幸いです。
環境
Laravel8
発生している問題・エラー
投稿機能実装時に、dd()で確認すると下記のようにユーザーIDのみnullになってしまいます。
attributes: array:6 [▼
"name" => "a"
"word" => "a"
"situation" => "a"
"merit" => "a"
"detail" => "a"
"user_id" => null
エラー表示
Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: 1364 Field 'image' doesn't have a default value (SQL: insert into `items` (`name`, `word`, `situation`, `merit`, `detail`, `user_id`, `updated_at`, `created_at`) values (a, a, a, a, a, ?, 2021-09-17 09:15:05, 2021-09-17 09:15:05))
該当するソースコード
ItemController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Item;
use Auth;
use Validator;
class ItemController extends Controller
{
public function index()
{
return view('index');
}
public function showCreateForm()
{
return view('item/create');
}
public function create(Request $request)
{
// Postモデルのインスタンスを作成する
$item = new Item();
// 名前
$item->name = $request->name;
//一言
$item->word = $request->word;
//シチュエーション
$item->situation = $request->situation;
//メリット
$item->merit = $request->merit;
//詳細
$item->detail = $request->detail;
//画像
//$item->image = $request->image;
//登録ユーザーからidを取得
$item->user_id = Auth::id();
// インスタンスの状態をデータベースに書き込む
$item->save();
//「投稿する」をクリックしたら投稿情報表示ページへリダイレクト
return redirect()->route('item.detail', [
'id' => $item->id,
]);
}
/**
* 詳細ページ
*/
public function detail(Item $item)
{
return view('item/detail', [
'name' => $item->name,
'word' => $item->word,
'user_id' => $item->user_id,
]);
}
}
create.blade.php
@extends('layouts.app')
@section('content')
<form method="post" action="{{ route('item.create') }}" enctype="multipart/form-data">
@csrf
<div class="form">
<div class="form-title">
<label for="name">タイトル</label>
<input class="" name="name" value="{{ old('name') }}">
</div>
<div class="form-title">
<label for="word"> 一言</label>
<input class="" name="word" value="{{ old('word') }}">
</div>
<div class="form-title">
<label for="situation">シチュエーション</label>
<input class="" name="situation" value="{{ old('situation') }}">
</div>
<div class="form-title">
<label for="merit">メリット</label>
<input class="" name="merit" value="{{ old('merit') }}">
</div>
<div class="form-content">
<label for="detail" class="form-content">詳細</label>
<textarea class="" name="detail" cols="50" rows="10">{{ old('detail') }}</textarea>
</div>
<!--<div class="form-title">
<label for="name">タイトル</label>
<input class="" name="name" value="{{ old('name') }}">
</div>-->
<div class="form-submit">
<button type="submit">投稿する</button>
</div>
</div>
</form>
@endsection
web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ItemController;
Route::get('/', [ItemController::class, 'index']);
Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
Route::get('/item', [ItemController::class, 'showCreateForm'])->name('item.create');
Route::post('/item', [ItemController::class, 'create']);
//投稿確認ページ
Route::get('/item/{item}', [ItemController::class, 'detail'])->name('item.detail');
自分で試したこと
様々なユーザーID取得方法を調べて記述しましたが改善せず。。。
0