Спасибо, буду ждать
Двойная связь.
Re: Двойная связь.
в модели Match
запрос и вывод я в кучу написал думаю это хоть осилите разобрать что к чему, что вам надо из этого а что нет ...
и еще раз повторюсь ... пройдите основы ...
Код: Выделить всё
public function getHome_team()
{
return $this->hasOne(Team::className(), ['id' => 'id_home_team']);
}
public function getAway_team()
{
return $this->hasOne(Team::className(), ['id' => 'id_away_team']);
}
Код: Выделить всё
$club = Club::find()->where(['id' => 1])->one();
if(!$club) throw new NotFoundHttpException("Клуб не найден");
/* @var Match[] $allMatches */
$allMatches = Match::find()
->joinWith('home_team ht')
->joinWith('away_team at')
->andWhere(['OR', ['ht.club_id' => $club->id], ['at.club_id' => $club->id]])
->all();
foreach($allMatches as $match)
{
echo "id: ".$match->id."<br>";
echo "home_team: ".($match->home_team?$match->home_team->name:"Не найдено")."<br>";
echo "away_team: ".($match->away_team?$match->away_team->name:"Не найдено")."<br>";
echo "<br>";
}
Re: Двойная связь.
Спасибо
но это выводит только айди, а нужно название.
я попробовал, но опять на элиасы ругается.
Но с помощью Вашего кода вывести названия хозяев я смог вывести.
но это выводит только айди, а нужно название.
я попробовал, но опять на элиасы ругается.
Но с помощью Вашего кода вывести названия хозяев я смог вывести.
Re: Двойная связь.
вы о чем
upd. только не говорите что вы не можете вывести название клуба ...
блин это же $club->name ... не смешно ...
где только айди ? я вам вывел названия команд в примере ...."но это выводит только айди, а нужно название."
где ? этот кусок кода рабочий, специально даже проверил, создал модели и тд ...."я попробовал, но опять на элиасы ругается."
upd. только не говорите что вы не можете вывести название клуба ...
блин это же $club->name ... не смешно ...
Последний раз редактировалось caHek2x 2017.04.24, 14:29, всего редактировалось 1 раз.
Re: Двойная связь.
Я виноват, не полную информвацию дал.
у меня три таблицы
match
__________
id
id_home_team
id_away_team
goal_home
goal_away
team
_____
id
club_id
league_id
club
_____
id
club_name
team имеет только айди Клуба
у меня три таблицы
match
__________
id
id_home_team
id_away_team
goal_home
goal_away
team
_____
id
club_id
league_id
club
_____
id
club_name
team имеет только айди Клуба
Re: Двойная связь.
и что ? я это и так догадался ... вам для запроса не надо джойнить club ... т.к. club.id = team.club_id
вам на выводе надо club name получить ? для этого тоже join не надо ...
вам на выводе надо club name получить ? для этого тоже join не надо ...
Re: Двойная связь.
а как тогда?
Re: Двойная связь.
Сейчас выглядит так
Код: Выделить всё
$club = Club::find()->where(['id' => $id])->one();
/* @var Match[] $allMatches */
$Calendar = Match::find()
->joinWith('home_team ht')
->joinWith('away_team at')
->andWhere(['OR', ['ht.club_id' => $club->id], ['at.club_id' =>$club->id]])
->all();
return $this->render('view', [
'model' => $model,
'AllPlayers' => $AllPlayers,
'Calendar' => $Calendar,
]);
}
Код: Выделить всё
<?php foreach ($Calendar as $Cal): ?>
<tr>
<td><?= $Cal->match_matchday ?></td>
<td><?=$Cal->match_date ?></td>
<td><?=$Cal->match_time ?></td>
<td><?= $Cal->home_team->club_id ?></td>
<td><?=$Cal->match_goal_home ?>:<?= $Cal->match_goal_away ?></td>
<td><?= $Cal->away_team->club_id ?></td>
<td>Чемпионщип</td>
<td>Олимпиаштадион</td>
</tr>
<?php endforeach; ?>
Re: Двойная связь.
в модель Team
а это сами знаете куда ...
Код: Выделить всё
public function getClub()
{
return $this->hasOne(Club::className(), ['id' => 'club_id']);
}
Код: Выделить всё
$club = Club::find()->where(['id' => 1])->one();
if(!$club) throw new NotFoundHttpException("Клуб не найден");
/* @var Match[] $allMatches */
$allMatches = Match::find()
->joinWith('home_team ht')
->joinWith('away_team at')
->andWhere(['OR', ['ht.club_id' => $club->id], ['at.club_id' => $club->id]])
->with(['home_team.club', 'away_team.club'])
->all();
foreach($allMatches as $match)
{
echo "id: ".$match->id."<br>";
if ($match->home_team)
{
echo "home_team: ".$match->home_team->name."<br>";
if ($match->home_team->club)echo "home_team_club: ".$match->home_team->club->name."<br>";
else echo "home_team_club: Не найдено в базе<br>";
}
else echo "home_team: Не найдено в базе<br>";
if ($match->away_team)
{
echo "away_team: ".$match->away_team->name."<br>";
if ($match->away_team->club)echo "away_team_club: ".$match->away_team->club->name."<br>";
else echo "away_team_club: Не найдено в базе<br>";
}
else echo "away_team: Не найдено в базе<br>";
echo "<br>";
}
Re: Двойная связь.
Эврик. Спасибо большое)
Re: Двойная связь.
а завтра вы опять проигнорировал то что надо все таки поучиться спросите "а как вывести ..."