Я пытаюсь создать отношения между игроком и Roleplay и его возвращающим нулем. Я знаю, что он должен работать, потому что следующий код работает отлично:
Roleplay::find(Auth::user()->id);
И возвращает правильные данные, полный массив правильных данных.
При попытке получить к нему доступ так:
Auth::user()->roleplay->user_id;
Это не работает, может кто-нибудь помочь мне узнать почему?
Откуда вы знаете его пустое?
Поскольку {{var_dump(Auth::user()->roleplay)}}
в представлении лезвия возвращает EMPTY
При использовании этого представления я также получаю неопределенную ошибку. Первичный ключ таблицы ролей (srp_user_statistics) является user_id, а первичный ключ таблицы (пользователей) игрока равен id
вот код:
Player: <?php namespace App\Database\Frontend\User; use Hash; use Eloquent; use \Illuminate\Auth\Authenticatable; use \Illuminate\Contracts\Auth\Authenticatable as Authentication; class Player extends Eloquent implements Authentication { use Authenticatable; protected $primaryKey = 'id'; protected $table = 'users'; public $timestamps = false; protected $fillable = []; public function setPasswordAttribute($value) { $this->attributes['password'] = Hash::make($value); } public function setUsernameAttribute($value) { return $this->attributes['username'] = $value; } public function roleplay() { return $this->hasOne('App\Database\Frontend\User\Roleplay', 'user_id'); } }
Ролевая игра:
use Eloquent; class Roleplay extends Eloquent { protected $primaryKey = 'user_id'; protected $table = 'srp_user_statistics'; public $timestamps = true; protected $fillable = []; public function user() { return $this->belongsTo('App\Database\Frontend\User\Player', 'user_id', 'id'); } public function government_role() { return $this->belongsTo('App\Database\Frontend\Roleplay\GovernmentRole', 'government_id'); } }
Я думаю, вы должны добавить 'id' в hasOne () в модели пользователя
public function roleplay() { return $this->hasOne('App\Database\Frontend\User\Roleplay', 'user_id', 'id'); }
И удалите 'id' из belonsTo () в модели Roleplay.
Боковые заметки
Эта работа
Roleplay::find(Auth::user()->id);
Не гарантирует, что ваши отношения установлены правильно. Все, что он делает, это
Roleplay::find(1); //$user->id returns an integer.