Ik heb een tabel met pagina's. Een pagina heeft een aantal vaste velden. Verder heb ik een tabel met categorieën. Een pagina kan gekoppeld zijn aan een X aantal categorieën, waarbij X 0 mag zijn, maar ook 1,2,3 etc.
M.b.v. $Page->find() haal ik een array op. Dit werkt allemaal goed. Maar nu wil ik een condition toevoegen waarbij gekeken wordt naar de categorieën. Deze staan in een array, opgedeeld in een subarray met numerieke waarden en een subarray met titels. Wanneer een subarray gegevens bevat, moet de condition worden toegevoegd.
Voorbeeld:
$options['categories'] array:
Conditions:
Huidige functie:
Huidige results array:
Na het toevoegen van de condition moet dus alleen de tweede Page met title 'foobar' aanwezig zijn. Kan dit überhaupt als condition in de find(), moet moet ik hiervoor in de model een functie schrijven?
M.b.v. $Page->find() haal ik een array op. Dit werkt allemaal goed. Maar nu wil ik een condition toevoegen waarbij gekeken wordt naar de categorieën. Deze staan in een array, opgedeeld in een subarray met numerieke waarden en een subarray met titels. Wanneer een subarray gegevens bevat, moet de condition worden toegevoegd.
Voorbeeld:
$options['categories'] array:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| Array ( [numeric] => Array ( ) [string] => Array ( [0] => navigation ) ) |
Conditions:
PHP:
1
2
3
4
5
6
7
8
| $conditions = array(); if(sizeof($options['categories']['numeric'])>0) { // hier een nieuwe condition toevoegen } if(sizeof($options['categories']['string'])>0) { // hier een nieuwe condition toevoegen // $conditions[] = array('Category.{n}.title' => $options['categories']['string']); // <-- werkt niet } |
Huidige functie:
PHP:
1
2
3
| $results = $Page->find('all',array( 'conditions' => $conditions ); |
Huidige results array:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| Array ( [0] => Array ( [Page] => Array ( [id] => 1 [title] => blaat ) [Category] => Array ( ) [Tag] => Array ( ) ) [1] => Array ( [Page] => Array ( [id] => 2 [title] => foobar ) [Category] => Array ( [0] => Array ( [id] => 1 [title] => navigation [CategoriesItem] => Array ( [id] => 1 [category_id] => 1 [item_id] => 2 ) ) ) [Tag] => Array ( ) ) ) |
Na het toevoegen van de condition moet dus alleen de tweede Page met title 'foobar' aanwezig zijn. Kan dit überhaupt als condition in de find(), moet moet ik hiervoor in de model een functie schrijven?
You cannot not communicate