在Zend框架中工作并使用Doctrine。
我有1场比赛,几场比赛一致(可能从4到50)。 这些比赛通常都有相同的球员。
我有桌子:
比赛
匹配
Matchresults
用户
第一步,让所有比赛属于比赛,这很容易,所以不用担心。 现在它变得棘手: 第二步,获得所有匹配的所有结果,仍然可以,我可以获得数据,但提供这些数据是具有挑战性的部分。 第三步,从users表中获取名称,其中users id等于matchresults表中给出的用户id。
最终结果应该是一个看起来像这样的表。
Name Match1 match2 match3 total points
firstname + lastname 50 60 61 171
firstname + lastname 52 56 66 174
我可以正确获取所有数据,但在正确的字段中获取所有数据有点问题。 任何人都可以指出我正确的方向或者给我一个例子吗?
干杯,
标记
编辑:澄清。 这是一场钓鱼比赛。 每场比赛都有一定数量的渔夫,根据他们捕获的内容获得积分。 日历年分为2或4个比赛,每年可以有所不同。 这些比赛有一个开始日期和结束日期,所有在比赛的开始日期和结束日期之间进行的比赛属于该比赛。现在该应用的用户想要进行excell导出,以我上面显示的方式显示所有结果,匹配越多,包含点数的列越多。
答案 0 :(得分:1)
您希望自己成为一个将竞争转化为用户列表及其结果的功能。类似的东西:
public function transform($competition)
{
$users = array();
$matches = $competition->getMatches();
$matchCount = count($matches);
$matchNum = 0;
foreach($matches as $match)
{
$matchNum++;
foreach($match->getResults() as $result)
{
$user = $result->getUser();
$userId = $user->getId();
// Add new user if necessary
if (!isset($users[$userId]))
{
// Store the name
$users[$userId]['name'] = $user->getFirstName() . ' ' . $user->getLastName();
// Spot to store total points
$users[$userId]['total'] = null;
// Individual match results
$users[$userId]['matches'] = array();
// Spots for each match in case users skip a match
for($i = 1; $i <= $matchCount; $i++) $users[$userId]['matches']['Match' . $i] = null;
}
$points = $result->getPoints();
$users[$userId]['matches']['Match' . $matchNum] = $points;
$users[$userId]['total'] += $points;
}
}
// Use usort if you want to sort by names
// Done
var_dump($users);
return $users;
}