【发布时间】:2019-04-05 07:00:06
【问题描述】:
我目前正在使用 Laravel。我是新手,仍在努力适应这个平台。我想根据表单输入更新我的数据库,但它不起作用。我已尝试更新模型、视图和控制器,但似乎无法使用输入值更新数据库。
我的看法:
<div class="form-group row">
<label class="col-xs-2 col-form-label">Expiration Date</label>
<div class="col-xs-10">
<input class="form-control" type="date" value="{{ $Document->expires_at }}" name="expires_at" placeholder="Expiration Date">
</div>
</div></form>
<embed src="{{ asset('storage/'.$Document->url) }}" width="100%" height="100%" />
<div class="row">
<div class="col-xs-6">
<form action="{{ route('admin.provider.document.update', [$Document->provider->id, $Document->id]) }}" method="POST">
{{ csrf_field() }}
{{ method_field('PUT') }}
<button class="btn btn-block btn-primary" type="submit">Approve</button>
</form>
</div></form>
我的模特:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ProviderDocument extends Model
{
protected $table = 'provider_documents';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'provider_id',
'document_id',
'url',
'unique_id',
'status',
'expires_at',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
];
/**
* The services that belong to the user.
*/
public function provider()
{
return $this->belongsTo('App\Provider');
}
/**
* The services that belong to the user.
*/
public function document()
{
return $this->belongsTo('App\Document');
}
}
我的控制器:
public function update(Request $request, $provider, $id)
{
if(Setting::get('demo_mode', 0) == 1) {
return back()->with('flash_error', 'Disabled for demo purposes! Please contact us at info@appoets.com');
}
try {
$Document = ProviderDocument::where('provider_id', $provider)
->where('id', $id)
->firstOrFail();
$Document->update(['status' => 'ACTIVE']);
$Document->expires_at = $request['expires_at'];
$Document->save();
return redirect()->route('admin.provider.document.index', $provider)->with('flash_success', 'Provider document has been approved.');
}
catch (ModelNotFoundException $e) {
return redirect()->route('admin.provider.document.index', $provider)->with('flash_error', 'Provider not found!');
}
}
数据库保持空白,没有错误。如果我直接手动将它放入数据库中,然后转到表单并更新,它就被删除了。请帮忙。
【问题讨论】:
-
dd() 你在Controller中的变量,看看里面是否存储了值。您可以存储空输入。
-
..您的视图很混乱,我认为是什么导致了错误,您的输入在表单之外,并且您的视图中有多个表单标签。
-
@LimKeanPhang 是对的 - 您的表单没有提交您预期的数据,因为
expires_at字段在表单之外。所以你的update()方法没有收到它,只是用相同的数据更新你的数据库记录,所以没有任何变化。 -
感谢大家的意见。 @LimKeanPhang 虽然我不喜欢你选择的词语,但你是对的。我清理了表格。我将在下面发布结果。哇!你们真的很有天赋和眼光!
-
它的 laravel 框架,所以代码结构必须很好,这就是框架本身的美??。很高兴它有帮助!干杯!