Laravel соединяет две модели с моделью пользователя

У меня есть следующие таблицы:

пользователей
Игры
Персонажи

У пользователя будет одна активная игра за раз, и из этой игры будет один активный персонаж.

Я хочу выполнить следующие joi на моей таблице аутентификации:

SELECT * FROM users
LEFT OUTER JOIN games ON games.ID = users.active_gameid
LEFT OUTER JOIN characters ON characters.ID = games.active_charid

Попробуйте игнорировать часть SELECT *.

Я хотел бы выполнить эти объединения в моей таблице Auth, как только страница загрузится, поэтому я использовал свою модель User для следующих действий:

класс User расширяет Eloquent, реализует UserInterface, RemindableInterface {

игра с публичными функциями () {
return $ this-> hasOne ('game', 'ID', 'active_gameid');
}

}

классная игра расширяется Eloquent {

protected $ table = "games";

символ публичной функции () {
return $ this-> hasOne ('character', 'ID', 'active_charid');
}

}

символ класса расширяет Eloquent {

защищенный $ table = "символы";

}

Вышеуказанное не работает, так как вывод следующего просто возвращает значение NULL:

var_dump (Auth :: пользователя () -> игра-символ>);

Я попытался сделать очевидные проверки, например, убедиться, что данные в таблице и тому подобное, и что все выглядит нормально.

У кого-нибудь есть помощь в том, где я иду не так?

Спасибо!

2

Решение

Ваши отношения неверны

// User model
public function game()
{
return $this->belongsTo('Game', 'active_gameid', 'ID');
}

// Game model
public function character()
{
return $this->belongsTo('Character', 'active_charid', 'ID');
}

и, очевидно, это не вызовет ваш запрос, а 2 отдельных запроса:

Auth::user()
->game // SELECT * FROM games WHERE ID = ?
->character; // SELECT * FROM characters WHERE ID = ?
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]