У меня возникла очень странная проблема с использованием Laravel.Странная ситуация NULL в моделях Laravel Eloquent
У меня есть 4 таблицы (есть больше, но они не имеют ничего общего с этой проблемой):
platoons
- id
- game_id
- leader_id
- name
games
- id
- name
- icon
game_user_info_fields
- id
- game_id
- user_info_id
user_info_fields
- id
- name
Модель этих таблиц содержат следующие методы соотношения:
class Platoon extends \Eloquent {
public function game() {
return $this->belongsTo('Game');
}
}
class Game extends \Eloquent {
protected $fillable = [];
protected $table = 'games';
public function fields() {
return $this->hasMany('GameUserInfoField');
}
}
class GameUserInfoField extends \Eloquent {
protected $fillable = [];
protected $table = 'game_user_info_fields';
public function field() {
return $this->belongsTo('UserInfoField');
}
public function game() {
return $this->belongsTo('Game');
}
}
class UserInfoField extends \Eloquent {
protected $fillable = [];
protected $table = 'user_info_fields';
public function fields() {
return $this->hasOne('GameUserInfoField');
}
}
Таблица данных:
platoons
id game_id leader_id name
1 1 1 Battlefield 4
2 2 1 CS:GO
3 3 1 LoL
4 4 1 GTAV
games
id name icon
1 Battlefield 4 bf4.png
2 CS:GO csgo.png
3 League of Legends lol.png
4 GTA V gtav.png
game_user_info_fields
id game_id user_info_field_id
1 1 1
2 1 2
3 2 3
4 3 4
5 4 5
user_info_fields
id name
1 Origin username
2 Battlelog link
3 Steam ID
4 LoL username
5 Social club username
Проблема:
(The ГВУ :: С.() метод является вспомогательным, аналогично функции дд())
$platoon = Platoon::where('id', '=', Input::get('platoon_id'))->first();
foreach ($platoon->game->fields as $gameuserinfofield) {
HLP::pp($gameuserinfofield->field);
}
Возвращает NULL,, когда его следует вернуть модель UserInfoField, а
foreach ($platoon->game->fields as $gameuserinfofield) {
HLP::pp($gameuserinfofield->game);
}
возвращает модель игры, как и следовало ожидать.
Они оба имеют один и тот же вид отношений, просто разные таблицы, так что я не понимаю, как это не удалось получить модель ...
Получение модели прямо через
UserInfoField::all();
извлекает модель, как и должно.
Я застрял на этом в течение последних 4 часов и не мог исправить это, пожалуйста, помогите!
Попробуйте передать имя столбца внешнего ключа следующим образом: 'return $ this-> attribTo ('Game', 'user_info_field_id');' – lukasgeiter
попробовал это раньше, и просто сделал это снова, и это не помогает – H1tm4n
Возьмите посмотрите на возвращаемое значение '$ gameuserinfofield-> field() -> toSql()' – lukasgeiter