Ergebnis 1 bis 17 von 17

Thema: Tabellen vor der DB Löschung/Update ausschließen

  1. #1
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard Tabellen vor der DB Löschung/Update ausschließen

    Hallo zusammen,

    wir haben für bestimmte Formulare eigene Tabellen in der DB. Seit der Umstellung des DB Updates im Contao Manager läuft man imho viel leichter Gefahr diese versehentlich beim DB Update mitzunehmen und zu löschen (Löschung ist auch default angehakt!). Und vor allem kann man jetzt nicht mehr sagen WELCHE denn gelöscht werden sollen. Entweder alle oder keine..... Das ist irgendwie unpraktisch und war vorher schöner.

    Meine Frage daher: Kann ich Tabellen entsprechend benennen oder in einer Config hinterlegen das diese dort gar nicht mehr auftauchen? Aktuell heisst eine davon z.B. jbz_streckenliste

    VG Frank
    Geändert von Kahmoon (21.10.2022 um 09:41 Uhr)

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107

    Standard

    Zitat Zitat von Kahmoon Beitrag anzeigen
    (Löschung ist auch default angehakt!)
    Im Install Tool meinst du? Oder im Contao Manager?
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Ja, Installtool/Contao Manager DB Update.
    Angehängte Grafiken Angehängte Grafiken

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107

    Standard

    Also weder Installtool noch Contao Manager sollten das by default machen. Der Screenshot zeigt das jetzt auch nicht.

    Unabhängig davon: warum wurde die Tabelle manuell angelegt, statt als DCA oder Entity?
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Die Tabelle wurde per PHP MyAdmin angelegt und ein Contao Formular speichert dort Daten. Ich muss das auf diesem Wege machen, weil ich diese Daten auf der Seite mit dem Modul/Inhaltselement "Auflistung" entsprechend ausgebe.

    Anhang für DB Update - Löschung
    Angehängte Grafiken Angehängte Grafiken

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107

    Standard

    Poste das als Issue für den Contao Manager. Löschungen sollten by default nicht aktiv sein.



    Zitat Zitat von Kahmoon Beitrag anzeigen
    Die Tabelle wurde per PHP MyAdmin angelegt und ein Contao Formular speichert dort Daten. Ich muss das auf diesem Wege machen, weil ich diese Daten auf der Seite mit dem Modul/Inhaltselement "Auflistung" entsprechend ausgebe.
    Das beantwortet nicht die Frage, warum nicht ein DCA oder ein Entity gemacht wurde, statt die Tabelle manuell über den phpMyAdmin anzulegen . Mach einfach ein DCA/Entity draus, dann wird es auch nicht gelöscht werden wollen.
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Das beantwortet nicht die Frage, warum nicht ein DCA oder ein Entity gemacht wurde, statt die Tabelle manuell über den phpMyAdmin anzulegen
    Weil ich nicht weiss was das ist :-D. Im Formular kann man einstellen in welche Tabelle es speichern soll. Das war für mich verständlich

    Conta Manager Issue: https://github.com/contao/contao-manager/issues/739

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107

    Standard

    Zitat Zitat von Kahmoon Beitrag anzeigen
    Weil ich nicht weiss was das ist :-D
    ? Du arbeitest doch ständig damit. Siehe zB. https://community.contao.org/de/show...i-Custom-field wo du dir ein eigenes Feld im DCA von tl_member angelegt hast.
    » sponsor me via GitHub or PayPal or Revolut

  9. #9
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Ja, aber nur in dem Zusammenhang mit dem speziellen Anwendungsfall bei Mitglieder oder Terminen. Wie ich über die DCA eine Custom Table anlege weiss ich ned. Aber ich lerne gerne dazu

    Das ist die Tabelle auf manuellem Weg.
    Code:
    CREATE TABLE `jbz_streckenliste` (
      `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `id` int(11) NOT NULL,
      `userid` int(4) NOT NULL,
      `username` varchar(255) COLLATE latin1_german2_ci NOT NULL,
      `name` varchar(255) COLLATE latin1_german2_ci NOT NULL,
      `vorname` varchar(255) COLLATE latin1_german2_ci NOT NULL,
      `email` varchar(255) COLLATE latin1_german2_ci NOT NULL,
      `datum` date NOT NULL,
      `revier` varchar(255) COLLATE latin1_german2_ci NOT NULL,
      `notiz` text COLLATE latin1_german2_ci NOT NULL,
      `location` varchar(255) COLLATE latin1_german2_ci NOT NULL,
      `wildart` varchar(255) COLLATE latin1_german2_ci NOT NULL,
      `gewicht` varchar(5) COLLATE latin1_german2_ci NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107
    » sponsor me via GitHub or PayPal or Revolut

  11. #11
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Puh, OK. Das muss ich mal in Ruhe testen. Danke...viele Fragen werden vermutlich kommen #vorwarnung

  12. #12
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Jetzt muss ich gleich am Anfang mal blöd fragen weil es nicht so ganz klappt wie ich es versuche.

    Ich habe eine tl_streckenliste.php ins dca Verzeichnis gepackt.

    Ich brauche keine Config, keine Callbacks, Paletten oder Listen. Fange ich dann direkt mit den Feldern an? Das checke ich von hier nicht so ganz.

    Sprich brauche ich dann diesen Teil überhaupt?

    Code:
    // contao/dca/tl_streckenliste.php
    $GLOBALS['TL_DCA']['tl_streckenliste'] = [
        'config' => […],
        'list' => […],
        'fields' => […],
        'palettes' => […],
    ];
    und nicht gleich Felder hinzufügen?

    Code:
    <?php 
    $GLOBALS['TL_DCA']['tl_streckenliste']['fields']['myfield'] = [
        'label'     => ['Test', 'das ist ein Test'],
        'exclude'     => true,
        'inputType' => 'text',
        'eval'         => ['tl_class'=>'w50', 'maxlength'=>255],
        'sql'         => "varchar(255) NOT NULL default ''",
    ];
    DB Update will diese Tabelle aber auch nicht anlegen.

    Edit:
    Das ganze Fields Gedöhns brauche ich ja eigentlich auch nicht. Ich will diese Daten nirgendwo im Backend bearbeiten. Nur das Formular speichert darin.
    Geändert von Kahmoon (21.10.2022 um 17:54 Uhr)

  13. #13
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Also quasi nur um die Tabelle zu erzeugen

    tl_streckenliste.php
    Code:
    <?php 
    $GLOBALS['TL_DCA']['tl_streckenliste'] = [
        'config' => ['dataContainer' => DC_Table::class,
            'sql' => [
                'keys' => [
                    // Define the primary key of the table
                    'id' => 'primary',
                       // Create an index for the field "foobar" to speed up queries on this field
                    'foobar' => 'index',
                    // Set the field "alias" to be unique
                    'alias' => 'unique',
                    // Create a combined index for the fields "lorem" and "ipsum" to speed up queries that use both these fields
                    'lorem,ipsum' => 'index',
                ],
            ],
        ],
    ];

  14. #14
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    So ich glaube ich bin ein Stück weiter. Ich habe mir das jetzt mal vom Core (Calendar) abgeschaut. Jetzt wird die Tabelle angelegt.

    Code:
    <?php 
    use Contao\DC_Table;
    
    
    $GLOBALS['TL_DCA']['tl_streckenliste'] = array
    (
    	// Config
    	'config' => array
    	(
    		'sql' => array
    		(
    			'keys' => array
    			(
    				'id' => 'primary'
    			)
    		)
    	),
    
    
    
    
    	// Fields
    	'fields' => array
    	(
    		'timestamp' => array
    		(
    			'sql'                     => "timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP"
    		),
    		'id' => array
    		(
    			'sql'                     => "int(10) unsigned NOT NULL auto_increment"
    		),
    		'userid' => array
    		(
    			'sql'                     => "int(4) NOT NULL"
    		),
    		'username' => array
    		(
    			'sql'                     => "varchar(255) NOT NULL"
    		),
    		'name' => array
    		(
    			'sql'                     => "varchar(255) NOT NULL"
    		),
    		'vorname' => array
    		(
    			'sql'                     => "varchar(255) NOT NULL"
    		),
    		'email' => array
    		(
    			'sql'                     => "varchar(255) NOT NULL"
    		),
    		'datum' => array
    		(
    			'sql'                     => "date NOT NULL"
    		),
    		'revier' => array
    		(
    			'sql'                     => "varchar(255) NOT NULL"
    		),
    		'notiz' => array
    		(
    			'sql'                     => "text NOT NULL"
    		),
    		'location' => array
    		(
    			'sql'                     => "varchar(255) NOT NULL"
    		),
    		'wildart' => array
    		(
    			'sql'                     => "varchar(255) NOT NULL"
    		),
    		'gewicht' => array
    		(
    			'sql'                     => "varchar(5) NOT NULL"
    		),
    	)
    );
    Geändert von Kahmoon (21.10.2022 um 18:32 Uhr)

  15. #15
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    OK, also zu 99% funzt das jetzt. Nur bei einem Feld mit Default CURRENT_TIMESTAMP das will er ned.

    Code:
            'timestamp' => array
            (
                'sql'                     => "DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP"
            ),
    oder

    Code:
            'timestamp' => array
            (
                'sql'                     => "TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"
            ),
    schmeisst leider das "CURRENT_TIMESTAMP raus. Das ist aber essenziell.

    Contao Install Tool
    Code:
    ALTER TABLE tl_streckenliste CHANGE timestamp timestamp DATETIME NOT NULL

    Ich kann das in PHPMyAdmin ändern.....aber dann schlägt es wieder bei den DB Updates auf :-D.

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.088
    Partner-ID
    10107

    Standard

    Würde ich über einen storeFormData Hook setzen lassen. Kann das Listing Bundle damit aber überhaupt umgehen?
    » sponsor me via GitHub or PayPal or Revolut

  17. #17
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Hmm das is alles ganz schön kompliziert nur um eine simple separate Tabelle zu haben .

    Das Listing fragt dieses Feld gar nicht ab (wie ich gerade feststelle). Ging ursprünglich wohl nur darum eine zeitliche Reihenfolge zuhaben, was nur die ID an sich ja auch ergeben würde. Ich habe das Feld jetzt einfach rausgeworfen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •