Hallo Allemaal,

Zijn we weer terwijl ik werkelijk geen steek verder gekomen ben. Dat komt hoogstwaarschijnlijk omdat ik blijf denken over hoe ik nu alles het beste kan doen. Bedoel het werkt nu allemaal wel en dat is fijn, maar het is niet zoals ik wil.

Ik zou namelijk mijn data op willen slaan via bijvoorbeeld een UserMapper naar een DatabaseStorage de database in. Het klinkt allemaal romantischer dan het is, vooral het lezen. Voornamelijk omdat je zo ongelovelijk veel functies hebt. Neem bijvoorbeeld gewoon een MySql database, ik wil wel gebruik kunnen maken van een eventuele JOIN of DATE functie binnen SQL. Het schrijven en dergelijke lukt me nog wel om een array van te maken en uit te laten voeren. Ik heb alleen geen enkel idee voor de lees functie.

Wat ik nu gebruik

<?php
public function read($table, $columns, $id)
{
	$columns = implode(', ', $columns);
	
	# Query
	$sql = "SELECT ".$columns." FROM ".$table;
	
	# Als er een ID is
	if( $id != NULL )
	{
		$sql .= " WHERE id = '".$id;
	}
	
	# Query Interpreteren en Controleren door Database
	$stmt = $this->db->prepare($sql);
	
	# Query Uitvoeren
	$stmt->execute(array((int) $id));
	
	# Result Opvangen en Retouneren d.m.v populate function
	while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) 
	{
		$data[] = $result;
	}
	
return $data;
}
?>


Zoals je ziet kan ik dan alleen niet JOINEN. Moet ik het zoeken bij een multidimensionale array? Moet ik meerdere methods gaan maken welke dan bijvoorbeeld de MySql functies representeren? Waar zit jullie gedachte hierbij? Dat laatste haalt alleen ook weer functionaliteit weg lijkt mij?

Vind het lastige keuzes waar ik al tijden mee aan het stoeien ben.
Maar verrek dat had ik?

Ik ga het even op een rij zetten voordat ik weer heel enthousiast ga programmeren... Ik baseer het verhaal even op het gebruikersgedeelte. Hiermee kan ik dan het principe onder de knie krijgen om dan vervolgens de rest aan te pakken.

UserMapper
- create( $_POST )
- getAll()
- getById( $iId )
- update( $_POST )
- delete()
- populate()

In de eerste 5 methods wordt een query gemaakt. De Query wordt doorgestuurd naar de DatabaseStorage. Mocht ik dan een FileStorage willen, dan maak ik een nieuwe UserMaper of pas ik deze aan zodat hij de juiste gegevens stuurt naar de FileStorage.
In mijn getAll & getById methods roep ik een populate / factory (hoe je het ook noemen wilt) method aan om het user object aan te maken zodat ik deze uiteindelijk kan retourneren naar de pagina waarop ik het weergeven wil.

DatabaseStorage
- save( $sSql )
- read( $sSql )
- delete( $sSql )

De DatabaseStorage ontvangt de SQL code van de Usermapper. Hij voert de code uit en retourneert het naar de UserMapper.
Ik ben het alleen niet zo eens met een gescheiden save method, dus ene create en update apart. Het doet werkelijk precies hetzelfde. Vandaar dat ik er voor kies om een save method te gebruiken voor beide.

Zeg me alstublieft dat ik het dan nu eindelijk door heb...
Ja, dat klopt :) Je code voorbeeld toonde: public function getAll( $sql ) in de usermapper. Dat was dus verkeerd, wat je hierboven schreef is correct!
God dank haha! Ik heb je niet een na laatste post maar die daarvoor geloof ik wel 20 keer gelezen en ik maar niet begrijpen wat je nu bedoelde. Ben superblij dat het nu eindelijk iets gaat worden haha.

Reageren