Zit nu een middag of 2 te stoeien met de query() functie van CakePHP.
Ik krijg het maar niet voorelkaar om met de query functie een query uit te voeren en deze uiteindelijk in mijn view te krijgen. Als ik een dump maak van mijn controller dan wordt alleen de basis query door cakephp uitgevoerd maar niet de door mij opgestelde query in de model.
Heb nu in de model een functie "doSomething" gemaakt met hierin mijn query.
De functie roep ik aan in mijn controller en laat ik via mijn controller posten naar mijn view.
Echter laat de controller dump geen data zien van mijn uitgevoerde query, terwijl de query volgens de query dump wel wordt uitgevoerd.
Waarschijnlijk post ik de array niet goed door met Cake naar mijn view maar ik kom er niet uit....
Wie o wie kan mij helpen?
Hieronder alle (delen) van de files en dumps::
view: index.ctp
controller: leveranciersMerchantsController
model: LeveranciersMerchant (deze query wordt wel uitgevoerd maar is niet in de view aanwezig, zie query 3 in de query dump)
deel van de controller dump, welke de uitvoer van de basisquery laat zien (query 5 in de query dump)
query dump:
de foutmelding in de view:
Ik krijg het maar niet voorelkaar om met de query functie een query uit te voeren en deze uiteindelijk in mijn view te krijgen. Als ik een dump maak van mijn controller dan wordt alleen de basis query door cakephp uitgevoerd maar niet de door mij opgestelde query in de model.
Heb nu in de model een functie "doSomething" gemaakt met hierin mijn query.
De functie roep ik aan in mijn controller en laat ik via mijn controller posten naar mijn view.
Echter laat de controller dump geen data zien van mijn uitgevoerde query, terwijl de query volgens de query dump wel wordt uitgevoerd.
Waarschijnlijk post ik de array niet goed door met Cake naar mijn view maar ik kom er niet uit....
Wie o wie kan mij helpen?
Hieronder alle (delen) van de files en dumps::
view: index.ctp
PHP: view.ctp
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
26
27
28
29
30
| <table> <?php $i = 0; foreach ($leveranciers as $leverancier): $class = null; if ($i++ % 2 == 0) { $class = ' class="altrow"'; } ?> <tr<?php echo $class;?>> <td> <?php echo $leverancier['Leveranciers']['id']; ?> </td> <td> <?php echo $leverancier['Leveranciers']['name']; ?> </td> <td> <?php echo $leverancier['Merchants']['name']; ?> </td> <td class="actions"> <?php echo $html->link(__('View', true), array('action' => 'view', $leverancier['LeveranciersMerchant']['id'])); ?> <?php echo $html->link(__('Edit', true), array('action' => 'edit', $leverancier['LeveranciersMerchant']['id'])); ?> <?php echo $html->link(__('Delete', true), array('action' => 'delete', $leverancier['LeveranciersMerchant']['id']), null, sprintf(__('Are you sure you want to delete # %s?', true), $leverancier['LeveranciersMerchant']['id'])); ?> </td> </tr> <?php endforeach; ?> </table> |
controller: leveranciersMerchantsController
PHP: leveranciers_merchants_controller.php
1
2
3
4
5
6
7
8
9
10
11
| class LeveranciersMerchantsController extends AppController { var $name = 'LeveranciersMerchants'; var $helpers = array('Html', 'Form'); function index() { $this->LeveranciersMerchant->recursive = 0; $leveranciers = $this->doSomethingmodel->doSomething(); $this->set('leveranciers', $this->paginate()); } } |
model: LeveranciersMerchant (deze query wordt wel uitgevoerd maar is niet in de view aanwezig, zie query 3 in de query dump)
PHP: leverancier_merchant.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <?php class LeveranciersMerchant extends AppModel { var $name = 'LeveranciersMerchant'; function doSomething() { $this->query("SELECT Leveranciers.name, Leveranciers.logo, affiliates.title FROM leveranciers_merchants LeveranciersMerchant INNER JOIN merchants Merchants ON (LeveranciersMerchant.merchants_id = Merchants.id) INNER JOIN leveranciers Leveranciers ON (LeveranciersMerchant.leveranciers_id = Leveranciers.id) INNER JOIN affiliates ON (Merchants.affiliate_id = affiliates.id);"); } } ?> |
deel van de controller dump, welke de uitvoer van de basisquery laat zien (query 5 in de query dump)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| [leveranciers] => Array ( [0] => Array ( [LeveranciersMerchant] => Array ( [id] => 4792 [merchants_id] => 100 [leveranciers_id] => 1068 ) ) [1] => Array ( [LeveranciersMerchant] => Array ( [id] => 4791 [merchants_id] => 966 [leveranciers_id] => 1060 ) ) |
query dump:
code:
1
2
3
4
5
| 1 DESCRIBE `leveranciers_merchants` 3 3 3 2 SELECT `cake_sessions`.`data` FROM `cake_sessions` WHERE `cake_sessions`.`id` = '60ee4c24678e424e36b1bb0458440102' 1 1 2 3 SELECT Leveranciers.name, Leveranciers.logo, affiliates.title FROM leveranciers_merchants LeveranciersMerchant INNER JOIN merchants Merchants ON (LeveranciersMerchant.merchants_id = Merchants.id) INNER JOIN leveranciers Leveranciers ON (LeveranciersMerchant.leveranciers_id = Leveranciers.id) INNER JOIN affiliates ON (Merchants.affiliate_id = affiliates.id); 106 106 5 4 SELECT COUNT(*) AS `count` FROM `leveranciers_merchants` AS `LeveranciersMerchant` WHERE 1 = 1 1 1 1 5 SELECT `LeveranciersMerchant`.`id`, `LeveranciersMerchant`.`merchants_id`, `LeveranciersMerchant`.`leveranciers_id` FROM `leveranciers_merchants` AS `LeveranciersMerchant` WHERE 1 = 1 LIMIT 20 20 20 1 |
de foutmelding in de view:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Notice (8): Undefined index: Leveranciers [APP\views\leveranciers_merchants\index.ctp, line 45] <tr<?php echo $class;?>> <td> <?php echo $leverancier['Leveranciers']['id']; ?> include - APP\views\leveranciers_merchants\index.ctp, line 45 View::_render() - CORE\cake\libs\view\view.php, line 666 View::render() - CORE\cake\libs\view\view.php, line 376 Controller::render() - CORE\cake\libs\controller\controller.php, line 803 Dispatcher::_invoke() - CORE\cake\dispatcher.php, line 230 Dispatcher::dispatch() - CORE\cake\dispatcher.php, line 194 [main] - APP\webroot\index.php, line 88 |
[ Voor 17% gewijzigd door Freemann op 07-02-2010 11:34 ]
https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl