Добавьте наблюдение (замечание) после тренировки - PullRequest
0 голосов
/ 10 июля 2019

На самом деле у меня есть 3 формы:

Первая - students с 2 полями (name, firstname).

Вторая - trainings с 2 полями (date_sitting, fk_student)`.

enter image description here

Следующая форма observations с 3 полями (title, description, fk_student).

enter image description here

Моя проблема в том, что я могу добавить 2 заседания за день для 1 наблюдение за ту же дату.

Возможно ли сделать блокировку для этого жанра case?

Вот идея моего кода на данный момент:

public function store(Request $request)
    {
        $request->validate([
                'title' => 'required|string|max:30',
                'description' => 'required|string|max:80',
                'fk_student' => 'required'

        ]);

        $exists = Observation::where('title', $request->get('title'))->where('description', $request->get('description'))->where('fk_student', $request->get('fk_student'))->count();

        if (!$exists){

        $sittings = Training::where('fk_student', $request->get('fk_student'))->first();


        if(!isset($sittings)){ // No payment = block creation and return error msg.
            return redirect()->route('observations.index')
                    ->with('error', 'No sitting, no observation for you!');
        }
        else{
            Observation::create($request->all());
            return redirect()->route('observations.index')
                    ->with('success', 'new data created successfully');
            }
        }

        if(isset($exists)){
            return redirect()->route('observations.index')
                    ->with('error', 'Duplicate ! ');
        }
    }

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 11 июля 2019

Конечно, у вас есть правильный код, чтобы увидеть, есть ли уже Наблюдение . Теперь вам просто нужно проверить, есть ли Сидящее для этого ученика в тот же день, что и Наблюдение . Итак:

if (!$exists){

    $sitting = Training::where('fk_student', $request->get('fk_student'))
                ->where('date_sitting', , '=', **SOME formatted DATE**)->first();


    if(isset($sitting)){ // If we have a match to student on the requested date, no good, return.
        return redirect()->route('observations.index')
                ->with('error', 'You already have a sitting for this date!');
}

Проблема в том, что когда вы говорите:

Моя проблема в том, что я могу добавить 2 заседания по датам для 1 наблюдения за одной и той же датой.

Я не знаю, какая дата является «той же датой». Дата совпадает с тем, что пользователь отправляет через форму для запроса Заседание ? Или установить дату на Наблюдение ? IE, я думаю, вам нужно решить, с какой датой вы сравниваете - в вашем коде нет входящей даты. Вам нужно сравнить дату (вероятно, из пользовательской формы, введенной в объект $request, введенный в метод store()), чтобы код, приведенный выше, работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...