[TYPO3-dev] Field type in MM-tables

Jochen Rau jochen.rau at typoplanet.de
Thu Jul 23 22:46:45 CEST 2009


Hi all.

Steffen Müller wrote:
> Hi.
>
> I code an extension using MM-tables. I decided to use the naming scheme
> of extbase for my tables, keeping a later transition in mind.
> A tablename for example is: tx_myextension_domain_model_mytablename
>
> The MM-table was created by the kickstarter. In my case, the field type
> for tablenames and ident (varchar(30)) were too short:
>
> CREATE TABLE tx_myextension_domain_model_mytablename_relations_mm (
>          uid_local int(11) unsigned DEFAULT '0' NOT NULL,
>          uid_foreign int(11) unsigned DEFAULT '0' NOT NULL,
>          sorting int(11) unsigned DEFAULT '0' NOT NULL,
>          sorting_foreign int(11) unsigned DEFAULT '0' NOT NULL,
>          tablenames varchar(30) NOT NULL,
>          ident varchar(30) NOT NULL,
>          KEY uid_local (uid_local),
>          KEY uid_foreign (uid_foreign)
> );
>
> My tablename is 39 charcters long, but tablenames only allows 30.
> MySQL itself limits a tablename to 64 characters.
>
> TYPO3 Core API docs also uses 30 characters in its examples.
>
> Is this a neccessary limitation of TCA?
> What sense does it make?
> Or is iot just a misconfiguration in kickstarter and TYPO3 core API
> docs? Otherwise I guess we'll often run into this problem with extbase
> naming scheme.

There is no naming scheme for mm tables in extbase. It is all defined in 
$TCA as usual

'tags' => array(
	'exclude' => 1,
	'label' => 
'LLL:EXT:blog_example/Resources/Private/Language/locallang_db.xml:tx_blogexample_domain_model_post.tags',
	'config' => array(
		'type' => 'select',
		'size' => 10,
		'minitems' => 0,
		'maxitems' => 9999,
		'autoSizeMax' => 30,
		'multiple' => 1,
		'foreign_class' => 'Tx_BlogExample_Domain_Model_Tag',
		'foreign_table' => 'tx_blogexample_domain_model_tag',
		'MM' => 'tx_blogexample_post_tag_mm'
	)
),

My personal preference is something like

"tx_blogexample_post_tag_mm"

in words:

suffix(erm prefix ;-))
_followed by extension name
_followed by left domain object name
_followed by right domain object name
_followed by "mm"

all in lowercase.

But you can also use: substr(md5('tx_blogexample_post_tag_mm'), 30) ;-)

Regards
Jochen


BTW: Writing a PDO Storage Backend is very easy. It's just for lack of 
(my) time.



-- 
Every nit picked is a bug fixed





More information about the TYPO3-dev mailing list