Seite 1 von 1

Tabelleneinträge umbenennen. (erledigt)

Verfasst: 19.12.2019 17:22
von chris1278
Folgendes. Ich habe eine Extension geschrieben und würde dafür gerne einige angelegte Tabelleneinträge umbenennen mittels der Migrationsdatei.


Um die tabellen in meiner Extension anzulegen, nutze ich folgenden Syntax:

Code: Alles auswählen

			array('config.add', array('hier_als_beispiel', 0)),

Und zwar würde dieser Syntax so wie er dort steht in der Tabelle Config dein Eintrag hier_als_beispiel erzeugen mit wert 0.

Wenn ich diesen Eintrag behalten will aber lediglich denn Namen ändern will wie muss der Syntax dann aussehen.

Ich hatte schon mal an so etwas gedacht:

Code: Alles auswählen

array('config.rename', array('hier_als_beispiel'','hier_als_beispiel'_nr_2')),
Aber das gibt dann nur eine Fehlermeldung.

Re: Tabelleneinträge umbenennen.

Verfasst: 19.12.2019 17:34
von BNa
Dann bitten wir mal um die Fehlermeldung (auch ein Screenshot ist genehm) :grin:

Re: Tabelleneinträge umbenennen.

Verfasst: 19.12.2019 17:41
von chris1278
Ok hier ein Screenshot der Fehlermeldung:

http://prntscr.com/qd5vas


Das ist das Array was ich nutze wo das passiert:

Code: Alles auswählen

class v_1_0_3 extends \phpbb\db\migration\migration
{
	static public function depends_on()
	{
		return array('\chris1278\social\migrations\v_1_0_2');
	}

	public function update_data()
	{
		return array(
					
			array('config.rename', array('social_facebook_url', 'social_test_url')),
			

			
		);
	}
}
Und zwar versuche ich die Extension für die Social Media Geschichte von mir etwas anzupassen. Dazu wollte ich einige Tabellen Einträge umbenennen. Wobei die Einträge aber erhalten bleiben sollten. Daher dachte ich, das ich es mit umbenennen probieren sollte. Allerdings bin ich was sql angeht nicht so bewandert.

Re: Tabelleneinträge umbenennen.

Verfasst: 20.12.2019 12:56
von LukeWCS
Hey Chris

Wäre das hier nicht eher in der Bastelstube passender?

Nur auf die Schnelle (Mittagspause):

Da es ja ein Beispiel war, wie du selber geschrieben hast, ist die Fehlermeldung nicht verwunderlich, denn die Methode config.rename gibt es nicht. Es gibt config.add, config.update und config.remove, siehe entsprechende Doku-Seite dazu.

Was du erreichen willst, kannst du mit einer Kombination aus config.add und config.remove lösen. Zuerst legst du mit .add die umbenannte Variable quasi neu an, mit dem Wert der alten Variable. Dann entfernst du mit config.remove die alte Variable. Wie du einen Wert übernehmen kannst, siehst z.B. in meinem LFWWH2 in der Datei v_2_0_0.php. Dort übernehme ich zwar die Daten von LFWWH1, aber das ist in dem Fall irrelevant, weil es das gleiche Prinzip ist, was du auch brauchst.

Und denke daran ein Update-Merkmal festzulegen, damit der Migrator weiss, welches Update schon ausgeführt wurde und welches nicht. Hierfür bietet sich schlicht die Ext Version an, dann bleibt das auch alles nachvollziehbar. Möglich wäre z.B. auch eine fortlaufende Nummer, quasi eine Seriennummer. Das finde ich aber eher suboptimal und wenig intuitiv. Schau dir dazu einfach mal LFWWH1 an, da habe ich etliche Migrations-Schritte. Oder jede beliebige andere Erweiterung, bei der es Migrationen gibt.

Re: Tabelleneinträge umbenennen.

Verfasst: 20.12.2019 15:53
von chris1278
Luke das ist ja bekannt. Bei SQL ist auch ein Rename möglich, ich wusste nur nicht das dies für die migrations Datei nicht umsetzbar ist. Und die migrations Datei Namen sind gleich der Version. Werde dann für die umändernung eine zwischendatei anlegen.

Re: Tabelleneinträge umbenennen.

Verfasst: 22.12.2019 03:07
von chris1278
Da ich den Startbeitrag leider nicht mehr bearbeiten kann bitte ich einen Moderator diesen als erledigt zu markieren.

Die Lösung war das so umzusetzen wie Luke es Vorgeschlagen hat. Das hat funktioniert.