Empfehlungen: Erweiterte Suche

statt Name: Vorname und Nachname

Anleitungen und Quellcode-Auszüge die den Start vereinfachen sollen.

statt Name: Vorname und Nachname

Beitragvon mbrod » Di 6. Sep 2011, 19:58

Wenn man es mit Personen zu tun hat, wird das z.B. durch ein Model User oder Person erledigt. Neben dem Feld name für den Nachnamen habe ich das Feld forename für den Vornamen gewählt.
Üblicherweise wird als $displayField automatisch das Feld name ausgegeben. In assoziierten Modellen kann dann die Person in einer Auswahlliste ausgewählt werden. Spätestens, wenn es zwei Personen mit dem gleichen Nachnamen gibt, kommt der Wunsch auf, auch den Vornamen anzeigen zu lassen. Dies ist mit lediglich zwei zusätzlichen Zeilen im Model möglich:
Code: Alles auswählen
class Person extends AppModel {
    var $name = 'Person';
    var $displayField = 'fullname';
    var $virtualFields=array('fullname'=>'CONCAT(Person.forename," ",Person.name)');
 

Im Prinzip ist dies zwar auch im Kochbuch beschrieben, aber eben an zwei verschiedenen Stellen, sodass diese einfache Möglichkeit nicht so schnell gefunden wird. ($virtualFields)
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: statt Name: Vorname und Nachname

Beitragvon sebbo.cake » Mi 2. Nov 2011, 18:06

Super, vielen Dank!
Hatte daran auch lange gesucht, kniffelig wirds, wenn dann noch Ort oder Geb.-Datum benötigt wird, weil je nach Datenmenge auch Vor und Nachname doppelt sein können! ABer auch das ist ja mit den VirtualFields möglich!

Sag, was genau ist denn "CONCAT" das sehe ich zum ersten mal....
sebbo.cake
 
Beiträge: 16
Registriert: Mi 11. Mai 2011, 13:31

Re: statt Name: Vorname und Nachname

Beitragvon mbrod » Mi 2. Nov 2011, 18:55

CONCAT ist ein MySQL Befehl. Aus dem Handbuch:

CONCAT(zeichenkette1,zeichenkette2,...)
Gibt die Zeichenkette zurück, die durch die Verkettung der Argumente entsteht. Gibt NULL zurück, wenn irgend ein Argument NULL ist. Kann mehr als 2 Argumente haben. Ein numerisches Argument wird in die äquivalente Zeichenkettenform umgewandelt:
mysql> select CONCAT(’My’, ’S’, ’QL’); -> ’MySQL’
mysql> select CONCAT(’My’, NULL, ’QL’); -> NULL
mysql> select CONCAT(14.3); -> ’14.3’
mbrod
 
Beiträge: 199
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X


Zurück zu Tutorials und Snippets

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron