2013-05-27 7 views
0

Я использую последнюю версию RedBeanPHP. Я моделирую структуру футбольной арматуры. Одна игра, выполняет 2 команды и относится к одному игровому дню (привязка в базе данных).RedBeanPHP несколько FK в ту же таблицу

$o = R::dispense('game'); 
$o->l = R::load('team',$l[$i]); 
$o->v = R::load('team',$v[$i]); 
$o->fixture = R::load('fixture',$id); 
$id = R::store($o); 

В базе данных, RB создает 2 Fk:

  • index_foreignkey_game_team
  • index_foreignkey_game_fixture

И после вкладных игр, этот код dosn't работы:

$games = R::find('games',"fixture_id='$ID'"); 
foreach($games as $o): 
    echo $o->l->id; // Cannot access to the Local Team 
    echo $o->v->id; // Cannot access to the Visit Team 
endforeach 

Спасибо!

+0

Я думаю, это обусловлено поле не получило такое же имя, что и таблица Fk. Например, если я переименую поле «l», команда «team» работает отлично, но мне нужно иметь 2 команды, и я не могу иметь двух полей под названием «team». – mauriblint

ответ

1

Просто используйте псевдоним, чтобы сообщить RedBeanPHP, что 'v' и 'l'.

Вот как:

//for testing only... 
list($team1, $team2) = R::dispense('team', 2); 

$game = R::dispense('game'); 
$game->team = R::load('team',$team1); 
$game->visitor = R::load('team',$team2); 
$id = R::store($game); 
$theGame = R::load('game', $id); 


echo 'team1: '.$theGame->team->id; 
echo PHP_EOL; 
//here I tell RedBeanPHP: visitor IS a team. 
echo 'team2: '.$theGame->fetchAs('team')->visitor->id; 

Для получения более подробной информации относительно наложения спектров: http://www.redbeanphp.com/aliasing

Надеется, что это помогает!

Приветствие, Габор

Смежные вопросы