[TYPO3-mvc] Concrete Table Inheritance
Eike Starkmann
starkmann at undkonsorten.com
Tue Apr 29 13:03:11 CEST 2014
BTW, you can also write a Hook that your SQL View is created when the
extension is installed, because you can not declare views in your
ext_tables.sql.
That looks like this, assuming your view definition is located at
Configuration/SQL:
namespace TYPO3\Publications\Hooks;
class PostInstallHook {
const EXTKEY = 'publications';
public function updateView() {
if(@file_exists(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath(self::EXTKEY)
. 'Configuration/SQL') &&
@is_dir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath(self::EXTKEY)
. 'Configuration/SQL')) {
// GET all *.sql Files in Configuration/SQL folder
$sqlFiles =
\TYPO3\CMS\Core\Utility\GeneralUtility::getFilesInDir(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath(self::EXTKEY)
. 'Configuration/SQL', 'sql', TRUE);
// run those files in DB
foreach ($sqlFiles as $sqlFile) {
$sql = file_get_contents($sqlFile);
$GLOBALS['TYPO3_DB']->sql_query($sql);
}
}
}
}
Regards, Eike
On 29.04.2014 12:53, Eike Starkmann wrote:
> Hi Christian,
>
> lest say you have a table "publication" and you have the table "news".
> And both classes should inherit from a class item. So item would be a
> view that unions both tables. The advantage of a view is that if e.g new
> publication are created they are immediately available in the table
> item. BUT you have to take care that the uids are unique here is an example:
>
> CREATE OR REPLACE VIEW tx_publications_domain_model_item AS SELECT
> ((uid * 2) + 1) AS uid,
> uid AS original_uid,
> title AS title,
> teaser AS teaser,
> ...
> FROM tx_publications_domain_model_publication
> UNION SELECT
> (uid * 2) AS uid,
> uid AS original_uid,
> title AS title,
> teaser AS teaser,
> ...
> FROM tx_news_domain_model_news WHERE no_publication = '0';
>
> Regards, Eike
>
> P.S.: Please try to also replay to list. (Had to copy your email)
>
>
>> Hi Eike,
>>
>> thanks for your answer!
>> For your workaround you needed to write native SQL statements, right?
>> I thought about doing that with UNION queries. How would you do that
>> with a view?
>
>> best regards,
>> Christian
>> On 28.04.2014 15:48, Eike Starkmann wrote:
>> Hi Christian,
>>
>> concrete table inheritance is not possible in extbase out of the box, as
>> far as i know.
>>
>> I once had the same problem and did a workaround via a sql view:
>>
>> Every table has its own class, and supertables are view(joins) of other
>> subtables.
>>
>> Works nice and you can use class inheritance.
>>
>> Regards, Eike
>>
>> On 28.04.2014 14:56, Christian Kartnig wrote:
>>> Hi there,
>>>
>>> I just wanted to ask if Concrete Table Inheritance exists in Extbase
>>> (yet)? The extbase book says yes, but I didn't find any information on
>>> how to set it up. Everywhere there is only Single Table Inheritance
>>> described.
>>>
>>> I just want every subclass to have its own table. I tried to add
>>> "extends" statements in the php model classes of the subclasses, but
>>> that obviously isn't enough.
>>>
>>> Can somebody please throw a light on this mystery?
>>>
>>> Thanks a lot,
>>> Christian
>>
>
More information about the TYPO3-project-typo3v4mvc
mailing list