Intereting Posts
Как хранить дату рождения и возраст, чтобы Age мог обновляться ежедневно в PHP / MySQL? Проблема с PHP Mailer: сообщение пустым Отправить форму (jquery) и показать результаты в colorbox неправильный порядок php mysql по метке времени Как вставлять и извлекать postBody в метод вставки учетной записи Mirror API с помощью PHP Ошибка PHP, MySQL: количество столбцов не соответствует количеству значений в строке 1 Определите часовой пояс из широты / долготы без использования веб-сервисов, таких как Geonames.org Контроллер REST обходит предел для каждого метода Опубликовать в facebook страницу поклонника как пользователь PHPUnit Mock Objects и статические методы Запустить файл PHP внутри приложения ASP.NET MVC 4 на IIS 7? WooCommerce – добавление пользовательской цены на каждый товар в корзине PHP – выпадающее меню (выберите) не работает должным образом во время цикла Обновить форму с помощью Ajax, PHP, MYSQL Создание правильного захвата изображения текущего экрана с использованием jquery или PHP или конвертировать div в pdf

Laravel HasOne отношения пустые

Я пытаюсь создать отношения между игроком и 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'); } } 

Solutions Collecting From Web of "Laravel HasOne отношения пустые"

Я думаю, вы должны добавить '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.