【发布时间】:2016-09-22 02:42:53
【问题描述】:
我需要帮助更新我在 laravel 中创建的博客文章。 我正在使用 restful 控制器中的更新方法来处理这个问题。 在我看来,表单正在提交给控制器中的正确函数(更新方法),但数据库中的表并未反映更改。
这是我的表格:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Register</div>
<div class="panel-body">
<form class="form-horizontal" role="form" method="POST" action="{{ url('/posts/$post_id') }}">
{{ csrf_field() }}
<input type="hidden" name="_method" value="PUT">
<div class="form-group{{ $errors->has('title') ? ' has-error' : '' }}">
<label for="title" class="col-md-4 control-label">Title</label>
<div class="col-md-6">
<input id="title" type="text" class="form-control" name="title" value="{{ !empty(old('title')) ? old('title') : $post->title }}" required autofocus>
@if ($errors->has('title'))
<span class="help-block">
<strong>{{ $errors->first('title') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('content') ? ' has-error' : '' }}">
<label for="content" class="col-md-4 control-label">Content</label>
<div class="col-md-6">
<textarea id="content" type="text" class="form-control" name="content" required rows="15" cols="20">{{ !empty(old('content')) ? old('content') : $post->content }}</textarea>
@if ($errors->has('content'))
<span class="help-block">
<strong>{{ $errors->first('content') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Post
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
这里是控制器功能
public function update(PostRequest $request, $id)
{
$title = $request->title;
$content = $request->content;
DB::table('posts')->where('id', $id)->update(['title' => $title, 'content' => $content]);
return 'Post was updated.<br>' . $title . '<br>' . $content;
}
我将 $title 和 $content 变量添加到 return 语句中,只是为了查看它们是否正常并被正确捕获。当我提交表格时,我会收到这里写的返回声明。这至少告诉我表单正确地提交给这个函数,但正如我所说,数据库没有反映更改。有谁知道我在这里做错了什么?不确定它的更新命令是否无法正常工作以使用隐藏的 inout 字段对 PUT 方法进行存根。
提前致谢。
【问题讨论】:
-
与您的问题无关,但我强烈建议您使用 eloquent 模型。那么您的更新查询将像
$post->update();一样简单 -
虽然看起来是更新查询,但为什么不调试 SQL 查询?