Отношение Laravel принадлежит к ошибке Попытка получить свойство 'имя' необъекта - PullRequest
1 голос
/ 01 мая 2019

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

Я пробовал несколько разрешений, которые имеют переполнение стека, но ни одно из них не дало результатов, кажется, простая вещь, но ... нетработа

Типовое учреждение

class Institution extends Model implements Transformable
{

    use TransformableTrait;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name'];

    public $timestamps = true;
}

Модель пользователя

class User extends Authenticatable
{
    use Notifiable;
    use SoftDeletes;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */

    public $timestamps = true;

    protected $table = 'users';

    protected $fillable = [
        'cpf',
        'name',
        'phone',
        'birth',
        'gender',
        'notes',
        'email',
        'password',
        'status',
        'permission'
    ];

Групповое лицо

class Group extends Model implements Transformable
{
    use TransformableTrait;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name','user_id','institution_id'];

    // a classe grupo pertence ao usuario atraves do metodo owneruser e institution
    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function institution()
    {
        return $this->belongsTo(Institution::class);
    }

}

GroupsController

    public function index()
    {

        $groups = $this->repository->all();
        $user_list = $this->userRepository->selectBoxList();
        $institution_list = $this->institutionRepository->selectBoxList();

        return view('group.index', [
            'groups' => $groups,
            'user_list' => $user_list,
            'institution_list' => $institution_list
        ]);
    }

Просмотр группы

@foreach($groups as $group)
<tr>
    <td>{{ $group->id }} </td>
    <td>{{ $group->name }} </td>

    // In this line where the error
    // Trying to get property 'name' of non-object  occurs
    <td> {{$group->institution->name }} </td>
    // This line is working
    <td> {{ $group->user->name }} </td>

    <td>
        {!! Form::open(['route' => ['group.destroy', $group->id], 'method' => 'delete']) !!}
            {!! Form::submit("Remover") !!}
        {!! Form::close() !!}
    </td>
</tr>
@endforeach

Надеюсь вывод в <td>{{ $group-> institution-> name }}</ td> Beназвание организации, в которой группа связана через внешний ключ, вместо этого она возвращает ошибку.

1 Ответ

1 голос
/ 01 мая 2019

Из образа БД я вижу, что вы используете верхний регистр для своего внешнего ключа Institution_id при использовании его в нижнем регистре в другом месте.Я считаю, что он чувствителен к регистру, так что попробуйте это в вашей Group модели:

public function institution()
{
    return $this->belongsTo(Institution::class, 'Institution_id');
}

И измените его также в списке fillable.

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