Использовать ввод одного метода в качестве ввода другого метода

Я приложил файл verify.blade.php и отредактированный код контроллера, а также файл маршрута, т.е. web.php, связанный с этими представлениями. Пожалуйста, помогите мне получить доступ к данным пациента, имя которого я ввожу в режиме проверки. Когда я ввожу имя этого пациента, он должен получить только данные этого пациента. В моем случае имя в качестве входных данных для предложения where. Все, что я ввожу при проверке имени, должно использоваться как ввод для метода отчета.

В моем контроллере я в настоящее время использую имя, контакт и группу крови пациента для проверки пациента. Как только введенные данные совпадают с данными, хранящимися в базе данных, метод отчета выполняется и возвращает таблицу отчета. Эта таблица отчета должна отображаться на основе имени, которое я ввел в режиме проверки.

Это мой контроллер:

    public function fetch(Request $req)
    {
        $firstname = $req->input('firstname');
        $contact=$req->input('contact');
        $bloodgroup=$req->input('bloodgroup');
        $verify= DB::select('select id from patient_details where firstname=? and contact=? and bloodgroup=?',[$firstname,$contact,$bloodgroup]);
        if (count($verify))
        {
            return redirect('report');
        }
        else
        {
            echo "failed";
        }
    }
    public function report()
    {
        
        $data = DB::table('patient_details')->where('patient_details.firstname','=',$firstname)
        
        ->join('pmedicalreadings','pmedicalreadings.id','patient_details.id')
        ->join('medrecords','medrecords.id','=','patient_details.id')
        ->join('payments','payments.id','=','patient_details.id')
        ->select('patient_details.firstname','patient_details.lastname','patient_details.address','patient_details.contact','patient_details.bloodgroup','patient_details.dateofbirth','patient_details.cnic','patient_details.gender','pmedicalreadings.bp','pmedicalreadings.temp','pmedicalreadings.ecg','medrecords.prerecord','payments.ptype','payments.tpayment','payments.rpayment')       
        
        ->get();
        
        return view('report',compact('data'));
    }

Это мой маршрут:

Route::get('/verify', function () {
    return view('/verify');
});
Route::post('verify/fetch', 'JoinController@report');
Route::get('/report','JoinController@report');

Это мой veridy.blade.php

    <form action = "{{url('/verify/fetch')}}" method = "POST" class = "login100-form validate-form flex-sb flex-w">
                @CSRF 
                    <span class = "login100-form-title p-b-32">
                        Personal Details
                    </span>
                    <span class = "txt1 p-b-11">
                        Username
                    </span>
                    <div class = "wrap-input100 validate-input m-b-36" data-validate = "Username is required">
                        <input class = "input100" type = "text" name = "username" >
                        <span class = "focus-input100"></span>
                    </div>
                    <span class = "txt1 p-b-11">
                        Contact
                    </span>
                    <div class = "wrap-input100 validate-input m-b-36" data-validate = "Email is required">
                        <input  class = "input100" type = "text" name = "contact" >
                        <span class = "focus-input100"></span>
                    </div>
                    <span class = "txt1 p-b-11">
                        Blood-Group
                    </span>
                    <div class = "wrap-input100 validate-input m-b-36" data-validate = "Email is required">
                        <input  class = "input100" type = "text" name = "bloodgroup" >
                        <span class = "focus-input100"></span>
                    </div>
                    <div class = "flex-sb-m w-full p-b-48">
                        <div>
                        
                        </div>
                    </div>

                    <div class = "d-flex align-items-center container-login100-form-btn">
                        <a class = "login100-form-btn" >
                            <button type = "submit" name = "action"  class = "login100-form-btn">
                                Verify
                            </button>
                        </a>
                    
                    </div>
                


                </form>

Это мой отчет.blade.php

    <form >
<table class = "table table-bordered table-striped">
            <tr  class = "bg-danger text-light">
                <th>Patient First Name</th>
                <th>Patient Last Name</th>
                <th>Patient Address</th>
                <th>Patient Contact</th>
                <th>Patient BloodGroup</th>
                <th>Patient Date-Of-Birth</th>
                <th>Patient CNIC</th>
                <th>Patient Gender</th>
                <th>Patient Blood Pressure Reading</th>
                <th>Patient Temperature Reading</th>
                <th>Patient ECG Reading</th>
                <th>Patient Medical Record</th>
                <th>Payment Type</th>
                <th>Total Payment</th>
                <th>Remaining Payment</th>
            </tr>
            @if (isset($data))
            @foreach($data as $row)
            <tr  class = "bg-secondary text-light">
            <td>{{$row->firstname}}</td>
            <td>{{$row->lastname}}</td>
            <td>{{$row->address}}</td>
            <td>{{$row->contact}}</td>
            <td>{{$row->bloodgroup}}</td>
            <td>{{$row->dateofbirth}}</td>
            <td>{{$row->cnic}}</td>
            <td>{{$row->gender}}</td>
            <td>{{$row->bp}}</td>
            <td>{{$row->temp}}</td>
            <td>{{$row->ecg}}</td>
            <td>{{$row->prerecord}}</td>
            <td>{{$row->ptype}}</td>
            <td>{{$row->tpayment}}</td>
            <td>{{$row->rpayment}}</td>
            </tr>
            @endforeach
            @endif
        </table>
        </form>
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Насколько я понимаю, когда форма проверки отправляется и в методе выборки проверяется, вы хотите отобразить представление отчета.

Если это правильно, вы можете попробовать следующее

public function fetch(Request $req)
{
    $firstname = $req->input('firstname');
    $contact=$req->input('contact');
    $bloodgroup=$req->input('bloodgroup');

    $verify= DB::select('select id from patient_details where firstname=? and contact=? and bloodgroup=?',[$firstname,$contact,$bloodgroup]);

    if (count($verify))
    {
        return $this->report($req);
    }
    else
    {
       return response(['message' => 'Failed!'], 400);
    }
}


public function report(Request $request)
{
    $firstname = $request->input('firstname');
        
    $data = DB::table('patient_details')->where('patient_details.firstname','=',$firstname)
        
        ->join('pmedicalreadings','pmedicalreadings.id', '=', 'patient_details.id')
        ->join('medrecords','medrecords.id','=','patient_details.id')
        ->join('payments','payments.id','=','patient_details.id')
        ->select('patient_details.firstname','patient_details.lastname','patient_details.address','patient_details.contact','patient_details.bloodgroup','patient_details.dateofbirth','patient_details.cnic','patient_details.gender','pmedicalreadings.bp','pmedicalreadings.temp','pmedicalreadings.ecg','medrecords.prerecord','payments.ptype','payments.tpayment','payments.rpayment')       
        
        ->get();
        
    return view('report',compact('data'));
}

Сэр, там написано, что требуется неопределенная переменная. Я также изменил запрос на запрос, затем он отображает таблицу, но таблица пуста.

M. Burhan Ahmad 14.12.2020 21:16

Что вы получите, если сделаете dd($firstname, $data) в функции отчета непосредственно перед оператором возврата

Donkarnash 14.12.2020 21:20

null Illuminate\Support\Collection {#334 ▼ #items: [] }

M. Burhan Ahmad 14.12.2020 21:22

Это означает, что $request->input('firstname') имеет значение null. Это потому, что вы назвали параметр в методе выборки как $req, а передали $request в отчете $this->report($request), хотя он должен быть $this->report($req). Обновите ответ, пожалуйста, проверьте и посмотрите, теперь он должен работать. - дайте мне знать, если иначе

Donkarnash 14.12.2020 21:26

все тот же ноль

M. Burhan Ahmad 14.12.2020 21:31

Означает ли это, что вы по-прежнему получаете нулевую и пустую коллекцию, когда dd($firstname, $data) непосредственно перед оператором возврата в методе отчета — даже после изменения на return $this->report($req) в методе выборки?

Donkarnash 14.12.2020 21:35

Да, сэр, я все еще получаю нуль в дд.

M. Burhan Ahmad 14.12.2020 21:37

Каково значение $firstname, если вы выполняете метод dd($req->input('firstname') in fetch

Donkarnash 14.12.2020 21:43

сэр, как это сделать dd($req->input('firstname'));

M. Burhan Ahmad 14.12.2020 22:35

Просто поместите dd($req->input('firstname'); в качестве первого оператора в методе выборки и посмотрите, что вы получите.

Donkarnash 14.12.2020 22:48

сэр, когда я ввожу dd($req->input('firstname'); я показываю запись

M. Burhan Ahmad 14.12.2020 23:10

не приводит меня к просмотру dd, он показывает запись в таблице

M. Burhan Ahmad 14.12.2020 23:11
dd($req->input('firstname'); выводит одно строковое значение или null в методе выборки. Если вы получаете нуль, проверьте вид лезвия с формой, есть ли у вас ввод с именем или нет. Verify.blade.php в вашем вопросе не имеет поля ввода с именем = "имя
Donkarnash 14.12.2020 23:20

сэр, я исправил ht name = usernme на name = firstname раньше

M. Burhan Ahmad 14.12.2020 23:26

теперь я вижу запись, для которой я ввожу имя в режиме проверки

M. Burhan Ahmad 14.12.2020 23:26

Поместите dd($req->input('firstname'); в качестве первой строки в метод выборки и снова отправьте форму - если она показывает значение, которое вы ввели для имени в форме, затем закомментируйте строку dd в выборке и повторно отправьте форму, она должна работать. Кстати ->join('pmedicalreadings','pmedicalreadings.id','patient_det‌​ails.id') должно быть ->join('pmedicalreadings','pmedicalreadings.id', '=', 'patient_details.id')

Donkarnash 14.12.2020 23:39

да, сэр, теперь он работает нормально. большое спасибо

M. Burhan Ahmad 15.12.2020 00:10

В вашей конкретной ситуации я бы использовал сеансы. я бы сделал

    public function fetch(Request $req)
    {
        $firstname = $req->input('firstname');
        $contact=$req->input('contact');
        $bloodgroup=$req->input('bloodgroup');
        $verify= DB::select('select id from patient_details where firstname=? and contact=? and bloodgroup=?',[$firstname,$contact,$bloodgroup]);
        if (count($verify))
        {
            session()->put('current_report_name', $firstname);
            return redirect('report');
        }
        else
        {
            echo "failed";
        }
    }
    public function report()
    {
        $firstname = session()->get('current_report_name');
        $data = DB::table('patient_details')->where('patient_details.firstname','=',$firstname)
        
        ->join('pmedicalreadings','pmedicalreadings.id','patient_details.id')
        ->join('medrecords','medrecords.id','=','patient_details.id')
        ->join('payments','payments.id','=','patient_details.id')
        ->select('patient_details.firstname','patient_details.lastname','patient_details.address','patient_details.contact','patient_details.bloodgroup','patient_details.dateofbirth','patient_details.cnic','patient_details.gender','pmedicalreadings.bp','pmedicalreadings.temp','pmedicalreadings.ecg','medrecords.prerecord','payments.ptype','payments.tpayment','payments.rpayment')       
        
        ->get();
        
        return view('report',compact('data'));
    }

Однако вы можете извлекать и отображать данные с одного и того же маршрута, разделяя их, как это необычно, но в вашем конкретном случае использования я бы сказал, что это будет нормально. Это просто означает, что если пользователь выбирает другого пользователя и возвращается к предыдущей открытой вкладке и обновляется, старая вкладка станет последним выбранным пользователем.

Сэр, он ничего не отображает в таблице. Представление таблицы отображается, но данные не извлекаются.

M. Burhan Ahmad 14.12.2020 21:18

Извините, игнорируйте последнюю часть, где я частично обрезал маршруты. Вы должны использовать свои маршруты

Corby Jurgens 14.12.2020 21:34

Сэр, я сохранил маршруты прежними

M. Burhan Ahmad 14.12.2020 21:35

Также похоже, что ваш veridy.blade.php не имеет правильных входных данных для вашей выборки (например, у вас есть имя пользователя вместо имени)

Corby Jurgens 14.12.2020 21:36

Вы можете не получить никакого результата, потому что у вас так много объединений. Соединение покажет результаты только в том случае, если в этих таблицах есть и другие результаты. Мейн, ты хочешь левое соединение

Corby Jurgens 14.12.2020 21:40

Да, сэр, я только что заметил, что исправил это, и он все еще показывает ноль в дд.

M. Burhan Ahmad 14.12.2020 21:40

Попробуйте несколько тестов, в которых вы удаляете объединения, и посмотрите, получите ли вы результат в функции отчета контроллера. Также проверьте, что $firstname не пусто с помощью echo или dd

Corby Jurgens 14.12.2020 21:42

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

M. Burhan Ahmad 14.12.2020 21:43

Присоединиться означает найти основную таблицу (сведения о пациенте) только в том случае, если все другие таблицы, к которым вы присоединяетесь, существуют. Левое соединение означает получение, даже если соединения не завершаются.

Corby Jurgens 14.12.2020 21:44

Если вы выполняете отладку на каждом этапе с помощью dd(), чтобы точно увидеть, в какой момент информация больше не отображается, вы найдете основную причину.

Corby Jurgens 14.12.2020 21:46

Хорошо, сэр, я пытаюсь это

M. Burhan Ahmad 14.12.2020 22:36

Сэр, я изменил соединение 2 внизу на левое соединение, и оно показывает мне результат для всех таблиц. То есть проблем с присоединением нет?

M. Burhan Ahmad 14.12.2020 22:38

Другие вопросы по теме