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

Я получаю сообщение об ошибке «Попытка получить имя свойства не-объекта при попытке напечатать, на мой взгляд, имя атрибута отношения 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);
    }

}

ГруппКонтроллер

    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> Будь имя учреждения, в котором группа связана через внешний ключ, вместо этого она возвращает ошибку.

Одна из причин, о которой я могу думать, заключается в том, что institution из group равно нулю. Вы можете проверить базу данных, что все строки в таблице groups сохранили institution_id?

Tharaka Dilshan 01.05.2019 05:28

@TharakaDilshan Здравствуйте, спасибо за ответ, я проверил базу данных, и все группы заполнены с указаниемstitution_id, посмотрите: связь

Kelvin Roqueto 01.05.2019 05:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
2
86
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

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

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

вот так! Сработало, спасибо большое, не обращал на это внимания, большое спасибо.

Kelvin Roqueto 01.05.2019 06:21

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