[CakePHP] Database waardes in custom config file bepalen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sam Clauw

Sam Clauw

24/06/2015 20:46:45
Quote Anchor link
Om CakePHP applicatie wat verder uit te werken, heb ik een eigen config file geschreven (customConfig.php). Hier check ik via de server name of ik al dan niet lokaal bezig ben:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

$config
= array(
    'Company' => array(
        'name' => 'Optiek Cardoen',
        'email' => '[email protected]'
    )
);


switch ($_SERVER['SERVER_NAME']) {
    case
'local.optiekcardoen.be':
        $config = array_merge($config, array(
            'debug' => 2,
            'Database' => array(
                'host' => 'localhost',
                'login' => 'root',
                'password' => '',
                'database' => 'xxx'
            )
        ));

        break;
    default:

        $config = array_merge($config, array(
            'debug' => 0,
            'Database' => array(
                'host' => 'localhost',
                'login' => 'xxx',
                'password' => 'xxx',
                'database' => 'xxx'
            )
        ));

        break;
}


?>


Ik vraag me nu af of het vanuit deze config file mogelijk is om te bepalen welke database er in moet worden geladen (de lokale database of de productie database). Iemand die hier ervaring mee heeft? ;)
 
PHP hulp

PHP hulp

22/11/2024 19:50:19
 
- wes  -

- wes -

25/06/2015 08:53:08
Quote Anchor link
Dit doe je hier toch al op basis van servername? Of heb je dev en productie op dezelfde server?
 
Ward van der Put
Moderator

Ward van der Put

25/06/2015 10:00:28
Quote Anchor link
Onder 'Database' heb je een array met de host(naam) van de databaseserver plus 'database' voor de naam van de database:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
       $config
= array_merge($config, array(
            'debug' => 0,
            'Database' => array(
                'host' => 'localhost',  // <-- Dit is je databaseserver.
                'login' => 'xxx',
                'password' => 'xxx',
                'database' => 'xxx'     // <-- En dit de database op die server.
            )
        ));

?>
 
Sam Clauw

Sam Clauw

25/06/2015 22:39:16
Quote Anchor link
Wel, het grote probleem is dat de database gegevens vanuit deze config file niet aan worden gesproken om een connectie met de database te leggen. Het zijn echter de (default) gegevens uit app/config/database.php dat voor de database connectie zorgen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
class DATABASE_CONFIG {
    
    /* Staging */
    
    public $local = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'xxx',
        'password' => 'xxx',
        'database' => 'xxx',
        'prefix' => '',
        'encoding' => 'utf8',
    );

    
    /* Production */
    
    /*public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'xxx',
        'password' => 'xxx',
        'database' => 'xxx',
        'prefix' => '',
        'encoding' => 'utf8',
    );*/
    
    /* Testing */

    /*public $test = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'user',
        'password' => 'password',
        'database' => 'test_database_name',
        'prefix' => '',
        //'encoding' => 'utf8',
    );*/

}
?>


Dat is dus iets wat ik anders wil en vanuit m'n "customConfig.php" wil laten gebeuren. Hopelijk heb ik m'n probleem hiermee wat duidelijker uitgelegd? ;)
 
Ricardo Dijken

Ricardo Dijken

09/07/2015 10:51:18
Quote Anchor link
Makkelijkste zou zijn om deze check ook in de database.php te doen.

Is dit in cakephp2 of 3?

Want volgens mij kan het in 2 niet op deze manier, het volgende zou moeten werken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
App::uses('ConnectionManager', 'Model');
ConnectionManager::loadDataSource(array(
  'host' => 'localhost',
  'login' => 'root',
  'password' => '',
  'database' => 'xxx'
));
?>
Gewijzigd op 09/07/2015 10:56:13 door Ricardo Dijken
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.