ich habe folgendes Problem. Habe ein Beispiel aus O'Reilly Buch, in dem eine Datenbanktabelle mittels einer HTML-Tabelle ausgegeben werden soll. Ich habe auch das zugehörige Bsp von der Buch-HP runtergeladen -> selber Fehler. Da ich jedoch schon auf mehrere Fehler während des Lesens draufgekommen bin, trau ich dem Buch nicht mehr so ganz...
also ich hab folgende zwei Tabellen:
CREATE TABLE IF NOT EXISTS `companies` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) NOT NULL,
`contact_person` varchar(128) DEFAULT NULL,
`address` varchar(128) NOT NULL,
`city` varchar(128) NOT NULL,
`phone` varchar(128) NOT NULL,
`email` varchar(128) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
CREATE TABLE IF NOT EXISTS `jobs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`company_id` int(11) NOT NULL,
`title` varchar(128) NOT NULL,
`description` text NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
die zugehörigen models:
- Code: Alles auswählen
- class Company extends Appmodel
{
var $name = 'Company';
#var $hasMany = array('Job');
var $hasMany = array('Job'=>array(
'ClassName' => 'Job',
'foreignKey'=>'company_id')
);
}
- Code: Alles auswählen
- <?php
class Job extends AppModel {
var $name = 'Job';
#var $belongsTo=array('Company');
var $belongsTo = array('Company'=>array(
'ClassName' => 'Company',
'foreignKey'=>'company_id')
);
?>
die entsprechende Action im jobs_controller:
- Code: Alles auswählen
- function table_jobs()
{
$jobs = $this->Job->find('all');
$jobs = Set::extract($jobs,'{n}.Job');
$this->set('jobs',$jobs);
}
die view dazu:
- Code: Alles auswählen
- <table>
<?php
echo $html->tableHeaders(
array('id',
'Firma',
'Titel',
'Beschreibung',
'Angebot vom',
'zuletzt aktualisiert')
);
echo $html->tableCells($jobs);
?>
</table>
ergibt diese Ausgabe:
Ich dachte, durch die Zuweisung zum Fremdschlüssel im Model, kann CakePHP dies automatisch so auflösen. Statt Firma "3" sollte zB "Volkswagen AG" stehen.
Was mach ich falsch??
Vielen Dank schon mal jetzt!