Невозможно передать скрытое значение в базу данных в laravel - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу передать имя параметра "ID" из моего маршрута в столбец моей базы данных "creation_by" , когда я нажму кнопку отправки. Я использую скрытое поле в моей форме для выполнения этой задачи. Можете ли вы сказать мне, где я иду не так.

Вот мои маршруты: -

Route::get('/post/{id}', 'PostsController@create');
Route::post('/p', 'PostsController@store');

Вот мой PostsController: -

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Post;
use App\user;

class PostsController extends Controller
{

public function create(Request $request)
    {
      return view('posts.CreatePost', compact('$request'));

    } 

  public function store(Request $request)
    {
post::create([
              'title'=>$request->title,
              'body'=>$request->body,
              'user_id'=>Auth::user()->id,
              'filled_by'=>Auth::user()->id,
              'created_by'=>$request->created_by  ,
            ]);
return redirect('/profile/' . auth()->user()->id);


}
}

Вот мое представление CreatePost: -


@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header"><h2>{{ __('Info') }}</h2></div>

                <div class="card-body">
                    <form method="POST" action="/p">
                        @csrf

                        <div class="form-group row">
                            <label for="title" class="col-md-4 col-form-label text-md-right">{{ __('Title') }}
                            </label>

                            <div class="col-md-6">
                                <input id="title"
                                name="title"
                                type="text"
                                class="form-control @error('title') is-invalid @enderror"
                                 value="{{ old('title') }}" required autocomplete="title" autofocus>

                                @error('title')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="body" class="col-md-4 col-form-label text-md-right">{{ __('Body') }}</label>

                            <div class="col-md-6">
                                <input id="body"
                                name="body"
                                type="text"
                                class="form-control @error('body') is-invalid @enderror"
                                 value="{{ old('body') }}" required autocomplete="body" autofocus>

                                @error('body')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <input type="hidden" id="created_by" name="created_by" value="{{$request->id}}"

                        <div class="form-group row mb-0">
                            <div class="col-md-6 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    {{ __('Submit') }}
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Вот мои сообщения Миграция: -

  public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
          $table->id();
          $table->unsignedBigInteger('user_id');
          $table->string('title');
          $table->text('body');
          $table->unsignedBigInteger('created_by');        
          $table->unsignedBigInteger('filled_by')->nullable();
          $table->timestamps();

          $table->index('user_id');
        });
    }

Вот изображение DD: - enter image description here

Передача идентифицированного идентификатора в столбец fill_by до того, как я добавил скрытое поле и столбец create_by

Я только начинающий, пожалуйста, помогите мне, это действительно много значит

-Спасибо

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Я предлагаю вам добавить параметр $ id в вашу функцию создания следующим образом:

public function create($id)
{
      return view('posts.CreatePost', [
            'id' => $id,
        ]);

}

Затем передать идентификатор в скрытое поле в вашем блейд-файле следующим образом:

<input type="hidden" id="created_by" name="created_by" value="{{ $id}}"

метод вашего магазина должен работать как есть, при условии, что у вас есть авторизованный вошедший в систему пользователь Auth :: user ().

1 голос
/ 21 апреля 2020

Чтобы сохранить идентификатор пользователя, который разместил, я бы сделал:

post::create([
  'title'=>$request->title,
  'body'=>$request->body,
  'user_id'=>Auth::user()->id,
  'filled_by'=>Auth::user()->id,
  'created_by'=> Auth::user()->id,
]);

Таким образом, вам не нужно передавать $request в функцию создания.

Я думаю, это то, чего ты хочешь достичь sh ...

...