Я получаю сообщение об ошибке «Попытка получить имя свойства не-объекта при попытке напечатать, на мой взгляд, имя атрибута отношения 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>
Будь имя учреждения, в котором группа связана через внешний ключ, вместо этого она возвращает ошибку.
@TharakaDilshan Здравствуйте, спасибо за ответ, я проверил базу данных, и все группы заполнены с указаниемstitution_id, посмотрите: связь






Из изображения БД я вижу, что вы используете верхний регистр для своего внешнего ключа Institution_id, а в другом месте используете строчные буквы. Я считаю, что это чувствительно к регистру, поэтому попробуйте это в своей модели Group:
public function institution()
{
return $this->belongsTo(Institution::class, 'Institution_id');
}
А также измените его в списке fillable.
вот так! Сработало, спасибо большое, не обращал на это внимания, большое спасибо.
Одна из причин, о которой я могу думать, заключается в том, что
institutionизgroupравно нулю. Вы можете проверить базу данных, что все строки в таблицеgroupsсохранилиinstitution_id?