私はLaravelの助けを借りて簡単な予約システムを作っています。予約された時間は、車を借りる架空の自動車会社のためのものです。だからあなたは時間を予約して車を借りる。私はかなりプロジェクトに入っていて、ほとんど終わりました。私はちょっとした問題があります。私はどのようにして私の予約時間を "予約不可"にすることができるのか分かりません。Laravel 5.2検証ヘルプデータベースに存在
私がユニークにしたいのは、予約の日付です。私の移行では、「予約」の時間(表は「回」と呼ばれている)私はすでに一意であることが、列「日付」を設定しているために:それは一意になるように
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'));
});
}
日付「整数」は、それを作ります私はそれを2回予約することはできません。しかし、私がしたいことは、予約された時間が現在の日から10日間の炭素時間枠内にあるかどうかをチェックすることです。当時は、このように構成されています。そして、私は$送る
$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>
私は「ボカ」ボタンを押すと、それでは時間がされます私は関係を使っているので、私は$ car-> timeでそれに達するので、その特定の車ですべての予約時間を得ることができます。
私は私の見解では、このように予約されているすべての回を示しています。だから、基本的に私は今、何をしたいか
<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>
はカーボンからの日付は私が欲しい「回」の表にあるかどうかを確認することです私の先生は、いくつかの方法でこのコードを使用するように私に語った。..観点から
を「ボカ」ボタンを削除するには:
$this->validate($request, [
'date' => 'exists:times,date'
]);
私はこのコードのスニペットが何を知っている、それがあれば送信された要求をチェックそのフォームの日付は列の日付のtimesテーブルに存在します。しかし、私はどこでそれを使うべきか分かりません。アイブ氏は、私はこのような「時間」テーブルに日付を追加私の「TimesController」で試してみました:
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>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
とエラーも出力は言った:「選択した日付が無効です。」 それでは、私の検証コードは、リクエストがデータベースにあるかどうかをチェックし、それがあれば日付が追加されることを確認します。しかし、日付が "times"テーブルにまだない場合は、追加されません。それは私が望んでいるのとまったく反対です。
以前私が示したように、Carbonの助けを借りて日付を作る場所にCarsControllerに入れてみました。しかし、私はそれから何も得ることができません..
私はこの記事がちょっと長いことを知っています。しかし、できるだけ多くの情報を得たいと思っていました。私は本当にいくつかの助けに感謝します。
TL/DR:私は何をしたいの予約のための私の日付は、予約した「回」テーブルまたはないであるかどうかを確認するLaravelに検証機能を使用しています。 IFそれでは"Boka"ボタンを消して欲しいです。日付を「時間」表に追加することはできません。それは「回」の表にある場合、代わりに「日」は、私が実際にそうすることを、私はSOMの助けをいただければ幸いかわからない
...カーボンで作られた日付から完全に消えてしまいます。ありがとう。 ええ、英語は母国語ではありませんので、私をバッシュしないでください。
専用のFormRequestを作成しようとしましたか?下の私の答えをチェックしてください:) –
また、有効な日付形式を検証していますか? –