Database 数据库中存在Laravel 5.2验证帮助
在拉威尔的帮助下,我正在制作一个简单的预订系统。所预订的时间是为一家虚构的汽车租赁公司预订的。所以你可以通过预约时间租一辆车。我对这个项目已经有相当的了解了,我几乎完成了。我只是有个小问题。可以这么说,我不知道怎样才能使我预定的时间“不可预定” 我想与众不同的是预订的日期。在我对“预定”时间(该表称为“时间”)的迁移中,我已将“日期”列设置为唯一:Database 数据库中存在Laravel 5.2验证帮助,database,validation,laravel,blade,Database,Validation,Laravel,Blade,在拉威尔的帮助下,我正在制作一个简单的预订系统。所预订的时间是为一家虚构的汽车租赁公司预订的。所以你可以通过预约时间租一辆车。我对这个项目已经有相当的了解了,我几乎完成了。我只是有个小问题。可以这么说,我不知道怎样才能使我预定的时间“不可预定” 我想与众不同的是预订的日期。在我对“预定”时间(该表称为“时间”)的迁移中,我已将“日期”列设置为唯一: public function up() { Schema::create('times', function (Blueprint $ta
public function up()
{
Schema::create('times', function (Blueprint $table) {
$table->integer('car_id')->unsigned();
$table->date('date');
$table->timestamps();
$table->primary(array('car_id', 'date'));
});
}
日期“整数”使它是唯一的,我不能预订两次。但我想做的是检查预定的时间是否在从现在开始的十天内。这些时间是这样安排的:
$dt = Carbon::now('Europe/Stockholm');
for ($i = 0; $i < 10; $i++) {
$dates[$i] = $dt->addDays(1)->toDateString();
}
<ul class="list-group">
@foreach ($dates as $date)
<form method="POST" action="/{{ $car->id }}/time">
{{ csrf_field() }}
<li class="list-group-item">
<input type="hidden" name="date" value="{{ $date }}">
{{ $date }}
<input type="submit" value="Boka" class="btn btn-primary"/>
</li>
</form>
@endforeach
</ul>
public function update(Request $request, Car $car, Time $time) {
$this->validate($request, [
'date' => 'exists:times,date'
]);
$times = new Time;
$times->date = $request->date;
$car->time()->save($times);
return back();
}
我知道这段代码的作用,它检查表单中日期是否存在于date列的times表中发送的请求。但我只是不知道在哪里使用它。我试过在我的“TimeController”中,将日期添加到“times”表中,如下所示:
$dt = Carbon::now('Europe/Stockholm');
for ($i = 0; $i < 10; $i++) {
$dates[$i] = $dt->addDays(1)->toDateString();
}
<ul class="list-group">
@foreach ($dates as $date)
<form method="POST" action="/{{ $car->id }}/time">
{{ csrf_field() }}
<li class="list-group-item">
<input type="hidden" name="date" value="{{ $date }}">
{{ $date }}
<input type="submit" value="Boka" class="btn btn-primary"/>
</li>
</form>
@endforeach
</ul>
public function update(Request $request, Car $car, Time $time) {
$this->validate($request, [
'date' => 'exists:times,date'
]);
$times = new Time;
$times->date = $request->date;
$car->time()->save($times);
return back();
}
但这不是我想要的方式。它检查日期是否在表中,以及是否在表中。它在做广告。但问题是,日期必须是唯一的,所以我收到一条错误消息,说日期不是唯一的。那很好,但不是我想要的。因此,如果我添加一个尚未预订的日期。它没有像应该的那样添加日期。我检查在视图中编写此代码时出现的错误:
<ul class="list-group">
@foreach ($car->time as $time)
<li class="list-group-item">
{{ $time->date }}
<form method="POST" action="/delete/time/{{ $time->car_id }}/{{ $time->date }}">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<input type="submit" value="Delete" class="btn btn-danger"/>
</form>
</li>
@endforeach
</ul>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@foreach($errors->all()作为$error)
- {{$error}}
@endforeach
它输出的错误是:“所选日期无效。”
因此,我从中得到的是,我的验证代码检查请求是否在数据库中,如果在数据库中,则添加日期。但如果日期不在“时间”表中,则不会添加该日期。那与我想要的正好相反
我试着把它放在我的汽车控制器里,在那里我用碳来制作日期,就像我之前展示的那样。但是我不能从中得到任何东西
我知道这篇文章有点长。但我想得到尽可能多的信息。我真的很感谢你的帮助
TL/DR:我想做的是使用Laravel中的验证功能来检查我的预订日期是否在预订的“时间”表中如果是,那么我希望“Boka”按钮消失。不能将日期添加到“时间”表中。或者,如果“时间”表中有“日期”,则“日期”可能会从用碳制成的日期中完全消失
我真的不知道该怎么办,所以我非常感谢你的帮助。谢谢
是的,英语不是我的母语,所以请不要批评我。有很多方法可以在Laravel中验证您的数据。我会给你看一些,随便选一个你喜欢的 首先是基础知识 您可以在选择的控制器方法中使用。官方文档中有一个很好的例子
...
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
...
验证规则位于方法的第二个参数中,即数组和其他规则
但是,这不是处理验证的唯一方法
在本节中,您可以:
- 使用
手动创建验证器李>validator::make()
- 制作一个
,将您的验证规则(以及最终的逻辑)隔离在一个单独的类中李>FormRequest
希望有帮助。:) 在Laravel中验证数据的方法有很多。我会给你看一些,随便选一个你喜欢的 首先是基础知识 您可以在选择的控制器方法中使用。官方文档中有一个很好的例子
...
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
...
验证规则位于方法的第二个参数中,即数组和其他规则
但是,这不是处理验证的唯一方法
在本节中,您可以:
- 使用
手动创建验证器李>validator::make()
- 制作一个
,将您的验证规则(以及最终的逻辑)隔离在一个单独的类中李>FormRequest
希望有帮助。:) 只需检查验证后方法是否返回true或false,并基于此使用返回错误或继续。只需检查验证后方法是否返回true或false,并基于此使用返回错误或继续。是否尝试创建专用FormRequest?检查我在底部的答案:)另外,您是否验证日期格式是否有效?是否尝试创建专用的FormRequest?检查我在底部的答案:)另外,您是否验证了日期格式是否有效?我已经查看了文档。我认为关于“存在”的代码有点糟糕。我真的不知道该怎么做。。就像我可以很明显地检查日期是否在表“times”中,但现在按照我希望的方式…@Addeuz你也验证了日期格式是否正确吗?@Franscesco你是什么意思?我将日期格式设置为yyyy-mm-dd,但它一点也没有改变?我已经查看了文档。我认为关于“存在”的代码有点糟糕。我真的不知道该怎么做。。就像我可以很明显地检查日期是否在表“times”中,但现在按照我希望的方式…@Addeuz你也验证了日期格式是否正确吗?@Franscesco你是什么意思?我将日期格式设置为yyyy-mm-dd,它一点也不改变?