Фасад \ Ignition \ Exceptions \ ViewException Попытка получить свойство 'name' необъекта в index.blade. php - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть две таблицы: отделы и сотрудники. Я хочу перечислить отделы или сотрудников. С отделом все в порядке, но когда я хочу видеть сотрудников, возникает ошибка. Я пробовал некоторые решения, но они не помогли мне. , он по-прежнему показывает эту ошибку

это сотрудники \ index.blade. php

----
                <table class="table">
                    <tr>
                        <td>Name</td>
                        <td>Department</td>
                    </tr>
                    @foreach($employees as $employee)
                    <tr>
                        <td>{{ $employee->name }}</td>
                        <td>{{  $employee->department->name }}</td>
                    </tr>
                    @endforeach
                </table>
---

это Интернет. php

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();
//Route::get('login/github', 'Auth\LoginController@redirectToGithub');
//Route::get('login/github/callback', 'Auth\LoginController@handleGithubCallback');
Route::resource('departments', 'DepartmentsController');
Route::resource('employees', 'EmployeesController');

Route::get('/home', 'HomeController@index')->name('home');

департаменты / index.blade. php

...
                <table class="table">
                    <tr>
                        <td>Name</td>
                    </tr>
                    @foreach($departments as $department)
                    <tr>
                        <td>{{ $department->name }}</td>
                    </tr>
                    @endforeach
                </table>
...

EmployeesController

   public function index()
    {
        $employees = \App\Employee::orderBy('id', 'desc')->paginate(10);

        return view('employees.index')->with('employees', $employees);
    }

DepartmentsController

    public function index()
    {
        $departments = \App\Department::all();
        $departments = \App\Department::orderBy('id', 'desc')->get();
        $departments = \App\Department::orderBy('id', 'desc')->paginate(5);
        return view('departments.index')->with('departments', $departments);
    }

Ошибка, которую я получаю: Facade \ Ignition \ Exceptions \ ViewException Попытка получить свойство 'name' необъекта (Представление: C: \ xampp \ htdocs \ Laravel \ test2 \ resources \ views \ employee \ index.blade. php)

Если я do return \ App \ Employee :: orderBy ('id', 'des c') -> paginate (10); я получаю это

{"current_page":1,"data":[{"id":2,"name":"Laura","department":""},{"id":1,"name":"Ana","department":""}],"first_page_url":"http:\/\/localhost\/Laravel\/test2\/public\/employees?page=1","from":1,"last_page":1,"last_page_url":"http:\/\/localhost\/Laravel\/test2\/public\/employees?page=1","next_page_url":null,"path":"http:\/\/localhost\/Laravel\/test2\/public\/employees","per_page":10,"prev_page_url":null,"to":2,"total":2}

Ответы [ 2 ]

1 голос
/ 12 марта 2020

вы можете использовать {{$ employee-> отдел-> имя ?? ""}} чтобы устранить эту ошибку.

1 голос
/ 12 февраля 2020

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

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Employee extends Model
{
    public function department()
    {
        return $this->belongsTo(Department::class);
    }
}
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Department extends Model
{
    public function employees()
    {
        return $this->hasMany(Employee::class);
    }
}

Это то, как вы можете установить отношения из части БД (если у вас их не было должным образом)

public function up()
    {
        Schema::create('departments', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->timestamps();
        });
    }
public function up()
    {
        Schema::create('employees', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->bigInteger('department_id')->unsigned();
            $table->foreign('department_id')
          ->references('id')->on('departments')
          ->onDelete('cascade');
            $table->timestamps();
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...