Hallo allemaal,
Ik had mijn vraag al gesteld in het algemene Laravel topic. Maar dat bleek niet handig dus ik stel hem hier nog een keer in een los topic.
Ik ben sinds kort bezig met Laravel. Nu loop ik tegen een probleem aan, heb al van alles geprobeerd maar ik kom er niet uit. Ook de documentatie en Google kunnen me niet helpen. Wat ik probeer is het volgende:
Mijn modellen:
Ik heb dus twee modellen: WedstrijdAfstand (tabel: wedstrijd_afstanden) en WedstrijdCode (tabel: wedstrijd_codes). De codes zijn gekoppeld aan de afstanden door middel van de tabel wedstrijd_afstand_wedstrijd_code.
De database is als volgt opgebouwd en gevuld:
Als ik dan vervolgens voor een bepaalde afstand de codes wil ophalen gebruik ik de volgende code:
Ik verwacht hierbij de volgende output:
Het 'probleem' is dus dat de bovenste foreach wel werkt, maar de onderste code niet. Ik krijg dan de error: Invalid argument supplied for foreach(). Het gaat dan om regel 19 in bovenstaande code.
Volgens de documentatie zou dit wel moeten werken voor many-to-many relaties.
Ik gebruik Homestead met de volgende PHP versie:
Doe ik iets verkeerd? Of is dit verwacht gedrag?
Alvast bedankt.
Ik had mijn vraag al gesteld in het algemene Laravel topic. Maar dat bleek niet handig dus ik stel hem hier nog een keer in een los topic.
Ik ben sinds kort bezig met Laravel. Nu loop ik tegen een probleem aan, heb al van alles geprobeerd maar ik kom er niet uit. Ook de documentatie en Google kunnen me niet helpen. Wat ik probeer is het volgende:
Mijn modellen:
PHP: WedstrijdAfstand.php
1
2
3
4
5
6
7
8
9
10
11
| <?php class WedstrijdAfstand extends \Eloquent { protected $table = 'wedstrijd_afstanden'; public function wedstrijd_codes() { return $this->belongsToMany('WedstrijdCode', 'wedstrijd_afstand_wedstrijd_code', 'wedstrijd_afstand_id', 'wedstrijd_code_id'); } } |
PHP: WedstrijdCode.php
1
2
3
4
5
6
7
8
9
10
11
| <?php class WedstrijdCode extends \Eloquent { protected $table = 'wedstrijd_codes'; public function wedstrijd_afstand() { return $this->belongsToMany('WedstrijdAfstand', 'wedstrijd_afstand_wedstrijd_code', 'wedstrijd_afstand_id', 'wedstrijd_code_id'); } } |
Ik heb dus twee modellen: WedstrijdAfstand (tabel: wedstrijd_afstanden) en WedstrijdCode (tabel: wedstrijd_codes). De codes zijn gekoppeld aan de afstanden door middel van de tabel wedstrijd_afstand_wedstrijd_code.
De database is als volgt opgebouwd en gevuld:
SQL: toertocht_afstanden
1
2
3
| | id | afstand | | 1 | 50.00 | | 2 | 75.00 | |
SQL: toertocht_codes
1
2
3
| | id | naam | | 1 | Tijdwaarneming | | 2 | Verzorging | |
SQL: wedstrijd_afstand_wedstrijd_code
1
2
3
4
| | id | wedstrijd_afstand_id | wedstrijd_code_id | | 1 | 1 | 1 | | 2 | 2 | 2 | | 3 | 2 | 1 | |
Als ik dan vervolgens voor een bepaalde afstand de codes wil ophalen gebruik ik de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <?php $afstanden = WedstrijdAfstand::all(); foreach($afstanden as $afstand) { echo '<h1>' . $afstand->afstand . '</h1>'; echo '<ul>'; foreach($afstand->wedstrijd_codes()->get() as $code) { echo '<li>' . $code->naam . '</li>'; } echo '</ul>'; echo '<ul>'; foreach($afstand->wedstrijd_codes as $code) { echo '<li>' . $code->naam . '</li>'; } echo '</ul>'; } |
Ik verwacht hierbij de volgende output:
code:
1
2
3
4
5
6
7
8
9
10
11
| 50.00 - Tijdwaarneming - Tijdwaarneming 75.00 - Tijdwaarneming - Verzorging - Tijdwaarneming - Verzorging |
Het 'probleem' is dus dat de bovenste foreach wel werkt, maar de onderste code niet. Ik krijg dan de error: Invalid argument supplied for foreach(). Het gaat dan om regel 19 in bovenstaande code.
Volgens de documentatie zou dit wel moeten werken voor many-to-many relaties.
Ik gebruik Homestead met de volgende PHP versie:
code:
1
2
3
4
5
6
| vagrant@homestead:~$ php -v PHP 5.6.3-1+deb.sury.org~trusty+1 (cli) (built: Nov 19 2014 19:38:33) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans |
Doe ik iets verkeerd? Of is dit verwacht gedrag?
Alvast bedankt.
[ Voor 0% gewijzigd door rnark op 25-01-2015 20:18 . Reden: Fixed typo in WedstrijdCode class ]