Ben makale ile bir tablo var. Makaleler bir veya daha fazla etiket olabilir. Ben onların etiketleri dayalı simular makaleleri almak istiyorum.
Benim tablo yapısı çok basittir. Bu Makaleler ve Etiketler arasında birçok ilişki için temelde sadece bir çok
abstract class BaseArticle extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('article');
$this->hasColumn('id', 'integer', 8, array(
'type' => 'integer',
'length' => 8,
'primary' => true,
'autoincrement' => true,
));
$this->hasColumn('title', 'string', null, array(
'type' => 'string'
));
}
public function setUp()
{
$this->hasMany('Articletag', array(
'local' => 'id',
'foreign' => 'article_id',
'cascade'=>array('delete')));
$this->hasMany('Dbtag as Dbtags', array('refClass'=>'Articletag',
'local' => 'article_id',
'foreign'=>'tag_id'
)
);
}
}
abstract class BaseDbtag extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('dbtag');
$this->hasColumn('id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => false,
'primary' => true,
'autoincrement' => true,
));
$this->hasColumn('name', 'string', 255, array(
'type' => 'string',
'length' => 255,
'fixed' => false,
'unsigned' => false,
'primary' => false,
'notnull' => false,
'autoincrement' => false,
));
}
public function setUp()
{
parent::setUp();
$this->hasMany('Articletag', array(
'local' => 'id',
'foreign' => 'tag_id'));
}
}
abstract class BaseArticletag extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('articletag');
$this->hasColumn('article_id', 'integer', 8, array(
'type' => 'integer',
'length' => 8,
'fixed' => false,
'unsigned' => false,
'primary' => true,
'autoincrement' => false,
));
$this->hasColumn('tag_id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => false,
'primary' => true,
'autoincrement' => false,
));
}
public function setUp()
{
parent::setUp();
$this->hasOne('Article', array(
'local' => 'article_id',
'foreign' => 'id'));
$this->hasOne('Dbtag', array(
'local' => 'tag_id',
'foreign' => 'id'));
}
}
Ne i lüzum etiket kümesi temelinde benzer yazılar almak için olduğunu. Ben olsun eşleşen etiketlerin sayısına göre sıralanmış 10 makaleleri söylemek istiyorum.
(Yerine makale filmleri ile) benzer bir sorun yerli SQL çözüldü here.
Yerli SQL kullanmadan Doctrine_Query kullanarak Doktrini bunu yapmanın en iyi yolu nedir?