Larevel 5.8 показать, обновить, удалить записи из двух разных таблиц - PullRequest
2 голосов
/ 28 июня 2019

Я пытаюсь показать, обновить и удалить запись из двух разных таблиц. Вот функция показа контроллера:

public function show($user_id)
    {
        //

        $staffinfo = Staff::find($user_id);  // Loading all data from 
        $userinfo = User::find($user_id); 
        return view('staff.view')
        ->with('staffinfo', $staffinfo)
        ->with('userinfo', $userinfo);
    }

Вот код view.blade.php:

<table class="table table-hover table-dark">
    <tbody>
        <tr>
            <th scope="row">Name</th>
            <td>{{ $staffinfo->name }}</td>
        </tr>        
        <tr>
               <th scope="row">Mobile</th>
               <td>{{ $userinfo->mobile }}</td>
        </tr>
        <tr>
            <th scope="row">Designation</th>
            <td>{{ $staffinfo->designatin }}</td>
        </tr>
    </tbody>
</table>

Редактирование и обновление функции в контроллере:

public function edit($user_id)
    {
        //
        $staffinfo = Staff::find($user_id);  // Loading all data from 
        $userinfo = User::find($user_id);
        return view('staff.edit')
        ->with('staffinfo', $staffinfo)
        ->with('userinfo', $userinfo);
    }


    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $user_id)
    {
        //
        $staffinfo = Staff::find($user_id);
        $staffinfo->name = $request->input('stfname');
        $staffinfo->user_id = $request->input('stfid');
        $staffinfo->designaton = $request->input('stfdesig');
        $staffinfo->dob = $request->input('staffdob');
        $staffinfo->save();

        $userinfo = User::find($user_id);
        $userinfo->user_id = $request->input('stfid');
        $userinfo->user_type = $request->input('stfdesig');
        $userinfo->mobile = $request->input('staffmobile');
        $userinfo->email = $request->input('staffmail');
        $userinfo->password = $request->input('staffpw');
        $userinfo->save();     
    }

edit.blade.php код некоторой части:

<h2>Update Staff</h2>
    <form method="post" action="{{ route('staff.update', $staffinfo->user_id) }}" enctype="multipart/form-data">
        @method('PATCH')
        @csrf
        <div class="form-row">
            <div class="form-group col-md-3">
              <label for="stfdesig">Designation</label>
              <input type="text" name="stfdesig" value="{{ $staffinfo->designation }}" class="form-control" id="stfid"

            </div>
            <div class="form-group col-md-3">
              <label for="stfid">ID</label>
              <input type="text" name="stfid" value="{{ $staffinfo->user_id }}" class="form-control" id="stfid">
            </div>
            <div class="form-group col-md-6">
              <label for="stfname">Name</label>
              <input type="text" name="stfname" value="{{ $staffinfo->name }}" class="form-control" id="stfname">
            </div>
<div class="form-group col-md-6">
              <label for="stfmobile">Mobile</label>
              <input type="text" name="stfmobile" value="{{ $userinfo->mobile }}" class="form-control" id="stfmobile">
            </div>
        </div>
<button type="submit" class="btn btn-primary">Update</button>
    </form>

Ошибка просмотра страницы:

Попытка получить свойство 'name' необъекта (Просмотр: F: \ XAMPP \ HTDOCS \ gchsc \ ресурсы \ вид \ Персонал \ view.blade.php)

Ошибка редактирования страницы:

Попытка получить свойство 'user_id' необъекта (Просмотр: F: \ XAMPP \ HTDOCS \ gchsc \ ресурсы \ вид \ Персонал \ edit.blade.php)

Ответы [ 4 ]

0 голосов
/ 29 июня 2019

Думаю, у меня проблема, но я не могу ее решить.Поле user_id имеется как в пользовательской таблице, так и в таблице персонала.Если, если отправить идентификатор из ссылки просмотра из index.blade.php, то это работает.

<a href="/staff/{{$info->id}}">View</a>

Если это отправить user_id, то это не работает.Отображается выше ошибка.

<a href="/staff/{{$info->user_id}}">View</a>

как я могу отправить форму user_id из ссылки просмотра?

0 голосов
/ 28 июня 2019

Я не уверен, ->with() - это метод, который вам нужен для передачи данных в представление.

Как сказал Шану, вы можете использовать compact.

Или вы можете просто передатьданные для представления в ассоциативном массиве в качестве второго параметра ...

return view('staff.edit', [
    'staffinfo' => $staffinfo,
    'userinfo' => $userinfo
]);
0 голосов
/ 28 июня 2019
   public function show($user_id)
        {
            //

            $staffinfo = Staff::find($user_id);  // Loading all data from 
            $userinfo = User::find($user_id); 
            return view('staff.view')
            ->with('staffinfo', $staffinfo)
            ->with('userinfo', $userinfo);
        }

Это правильный способ показать записи из нескольких таблиц в одном представлении страница без создания отношения в модели?

Вот код view.blade.php

<table class="table table-hover table-dark">
            <tbody>
                <tr>
                    <th scope="row">Name</th>
                    <td>{{ $staffinfo->name }}</td>
                </tr>        
                <tr>
                       <th scope="row">Mobile</th>
                       <td>{{ $userinfo->mobile }}</td>
                </tr>
                <tr>
                    <th scope="row">Designation</th>
                    <td>{{ $staffinfo->designatin }}</td>
                </tr>
            </tbody>
        </table>
0 голосов
/ 28 июня 2019

Вы можете передавать значения с помощью compact ()

public function show($user_id){

     $staffinfo = Staff::find($user_id);
     $userinfo = User::find($user_id);

     return view('staff.view', compact('staffinfo','userinfo'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...