Hoe kan ek 'n lys van subklasse vir 'n PROPEL model met beton erfenis
-
26-09-2019 - |
Vra
Ek is die bou van 'n mini-CMS vir my plaaslike liefdadigheid (ja, ek weet ek kan 'n floss projek gebruik, maar hulle wil persoonlike gekodeerde)
My PROPEL skedule tans lyk soos: -
<?xml version="1.0" encoding="UTF-8"?>
<database name="sja" defaultIdMethod="native">
<table name="section">
<column name="id" type="INTEGER" primaryKey="true" required="true" autoIncrement="true" />
<column name="title" type="VARCHAR" required="true" />
<column name="slug" type="VARCHAR" required="true" />
</table>
<table name="page">
<column name="id" type="INTEGER" primaryKey="true" required="true" autoIncrement="true" />
<column name="title" type="VARCHAR" required="true" />
<column name="section_id" type="INTEGER" required="true" />
<foreign-key foreignTable="section">
<reference local="section_id" foreign="id" />
</foreign-key>
</table>
<table name="static_page">
<behavior name="concrete_inheritance">
<parameter name="extends" value="page" />
</behavior>
<column name="content" type="LONGVARCHAR" required="true" />
</table>
<table name="home_page">
<behavior name="concrete_inheritance">
<parameter name="extends" value="page" />
</behavior>
<column name="standfirst_title" type="VARCHAR" />
<column name="standfirst_image" type="VARCHAR" />
<column name="standfirst_content" type="VARCHAR" />
</table>
</database>
Ek wil in staat wees om 'n lys wat sal insluit "home_page" en "static_page" kry -. Sonder om te hierdie hand te skep wanneer ek 'n nuwe bladsy tipe voeg
Is daar 'n maklike manier om 'n lys soos hierdie te kry, of moet ek 'n paar magic stuff met Refleksie Klasse, ens?
skryfOplossing
Na 'n sak in die regte rigting van #propel op Free Node - Ek het vorendag gekom met hierdie vir 'n basis konsep - dit nog nie getoets al
function getSubClasses()
{
$map = $this->getDatabaseMap();
$children = array();
foreach ($map->getRelations() AS $relation)
{
$behaviours = $relation->getRightTable()->getBehaviours();
if (issset($behaviours['concrete_inheritance']['extends']) AND $behaviours['concrete_inheritance']['extends'] == $this->getDatabaseMap()->getClassName())
{
$children[] = $relation->getRightTable()->getClassName();
}
}
return $children;
}
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow