首页 > 解决方案 > 如何修复与控制器相关的此错误?

问题描述

我有问题,谢谢你的帮助。当有人提交问题时,我希望在 Store 方法中完成此操作,但它给了我一个错误,上面写着:需要 thread_id ???!

  Subscribe::query()->create([
        'thread_id'=>$thread->id,
        'user_id' => auth()->user()->id
    ]);

这是我的 Store 方法的代码,其中包括订阅模型:

 public function store(Request $request,Thread $thread)
{
    $request->validate([
        'title' => ['required', 'min:3'],
        'description' => ['required'],
        'channel_id' => ['required'],
        'thread_id' => ['required']
    ]);

    Thread::create([
        'title' => $request->title,
        'description' => $request->description,
        'user_id' => auth()->user()->id,
        'channel_id' => $request->channel_id,
    ]);

    Subscribe::query()->create([
        'thread_id' => $thread->id,
        'user_id' => auth()->user()->id
    ]);
    return redirect('/');
}

这也是View相关的代码

<form action="{{route('threads.store')}}" method="post">
@csrf
<input type="hidden" name="thread_id" value="{{$thread->id}}">

<div class=" container-fluid w-75 border border-secondary rounded shadow">
    <div style="font-weight: bolder; font-size: large;" class=" my-3">فرم ارسال پرسش</div>
    <div class="input-group mb-3">
        <div class="input-group-prepend">

        </div>
        <input type="text" name="title" class="form-control" placeholder="موضوع" aria-label="Username" value="{{old('title')}}"
               aria-describedby="basic-addon1">
    </div>
    
    <div class="input-group">
        <textarea name="description" class="form-control" aria-label="With textarea" placeholder="متن پرسش"
                  style="height: 200px;">{{old('description')}}</textarea>
    </div>


    <div class="input-group mt-3 " style="direction: ltr;">
        <select name="channel_id" class="custom-select" id="channel_id" >
            <option selected disabled value="{{old('channel_id')}}">انتخاب عنوان</option>
            @foreach(\App\Models\Channel::all() as $channel)
                <option value="{{$channel->id}}">{{$channel->name}}</option>
            @endforeach
        </select>

    </div>

    <div class="my-3" style="width: 100px;">
        <button class="btn btn-success" type="submit">ارسال</button>
    </div>


</div>

关于此代码的问题

<input type="hidden" name="thread_id" value="{{$thread->id}}">

我也发送了线程模型

 public function create(Thread $thread)
{
    return view('answer-question.thread.thread-create',compact('thread'));
}

这是订阅数据库 在此处输入图像描述

标签: phplaravellaravel-5laravel-8

解决方案


public function store(Request $request)
{
    $request->validate([
        'title' => ['required', 'min:3'],
        'description' => ['required'],
        'channel_id' => ['required'],
        'thread_id' => ['required']
    ]);

    $thread = Thread::create([
        'title' => $request->title,
        'description' => $request->description,
        'user_id' => auth()->user()->id,
        'channel_id' => $request->channel_id,
    ]);

    Subscribe::query()->create([
        'thread_id' => $thread->id,
        'user_id' => auth()->user()->id
    ]);
    return redirect('/');
}

当您保存它时,您不能将存储函数带到线程模型,然后您需要定义线程结束然后您可以调用它。


推荐阅读