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,它一点也不改变?