Doctrine을 사용하여 포트폴리오의 태그를 저장하는 데 약간의 문제가 있습니다.많은 관계를 저장하십시오.
abstract class BasePortfolio extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('portfolio');
$this->hasColumn('id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => true,
'primary' => true,
'autoincrement' => true,
));
$this->hasColumn('title_esp', 'string', 250, array(
'type' => 'string',
'length' => 250,
'fixed' => false,
'unsigned' => false,
'primary' => false,
'notnull' => false,
'autoincrement' => false,
));
$this->hasColumn('date_creation', 'date', null, array(
'type' => 'date',
'fixed' => false,
'unsigned' => false,
'primary' => false,
'notnull' => false,
'autoincrement' => false,
));
}
public function setUp()
{
parent::setUp();
$this->hasMany('Images', array(
'local' => 'id',
'foreign' => 'id_portfolio'));
$this->hasMany('PortfolioHasTags', array(
'local' => 'id',
'foreign' => 'portfolio_id'));
}
}
클래스 PortfolioHasTags : 내가 포트폴리오 모델이
$portfolio = new Portfolio;
foreach($tags as $id_tag)
{
$portfolio->PortfolioHasTags[]->tags_id = $id_tag;
}
:
abstract class BasePortfolioHasTags extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('portfolio_has_tags');
$this->hasColumn('portfolio_id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => true,
'primary' => true,
'autoincrement' => false,
));
$this->hasColumn('tags_id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => false,
'primary' => true,
'autoincrement' => false,
));
}
public function setUp()
{
parent::setUp();
$this->hasOne('Portfolio', array(
'local' => 'portfolio_id',
'foreign' => 'id'));
$this->hasOne('Tags', array(
'local' => 'tags_id',
'foreign' => 'id'));
}
}
및 태그 모델
abstract class BaseTags extends Doctrine_Record
{
public function setTableDefinition()
{
$this->setTableName('tags');
$this->hasColumn('id', 'integer', 4, array(
'type' => 'integer',
'length' => 4,
'fixed' => false,
'unsigned' => false,
'primary' => true,
'autoincrement' => true,
));
$this->hasColumn('title_esp', 'string', 45, array(
'type' => 'string',
'length' => 45,
'fixed' => false,
'unsigned' => false,
'primary' => false,
'notnull' => false,
'autoincrement' => false,
));
}
public function setUp()
{
parent::setUp();
$this->hasMany('PortfolioHasTags', array(
'local' => 'id',
'foreign' => 'tags_id'));
}
}
내가 한 포트폴리오의 여러 태그에 저장해야
이 작업을 수행하는 더 좋은 방법이 있습니까? 이 관계를 저장하기 위해 손잡이를 사용하는 것은 추한 것입니다!
나는 foreignAlias를 스키마에 넣음으로써 그것을 해결했다. 감사합니다. – Mauro