Отношения Laravel не работают, но внешний ключ имеет значение - PullRequest
0 голосов
/ 11 июня 2018

У меня есть пользовательская модель, в модели у меня есть целочисленное поле с именем role_id.если я выведу это значение {{ $user->role_id }} и получу число обратно, у меня также будет настройка отношения на модели пользователя с моделью для подражания, но если я попытаюсь сделать {{ $user->role()->role_name }}, я получу следующую ошибку:

Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$role_name 

Если я использую код {!! \App\Models\Role::whereKey($user->role_id)->pluck('role_name') !!}, я получаю значение правильно, поэтому оно связано с отношением, которое я просто не вижу, где оно.

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

public function role()
{
    return $this->hasOne('\App\Models\Role');
}

Ролевая модель

class Role extends Model

{использовать SoftDeletes;

public $table = 'roles';

const CREATED_AT = null;
const UPDATED_AT = null;


protected $dates = ['deleted_at'];


public $fillable = [
    'role_name'
];

/**
 * The attributes that should be casted to native types.
 *
 * @var array
 */
protected $casts = [
    'id' => 'integer',
    'role_name' => 'string'
];

/**
 * Validation rules
 *
 * @var array
 */
public static $rules = [

];

public function users(){
    return $this->belongsTo('App\Models\User');
}

1 Ответ

0 голосов
/ 11 июня 2018

Вы должны использовать магическое свойство $role вместо метода определения отношений role().Попробуйте это:

{{ $user->role->role_name }}
...