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'));
}
}
私は1つのポートフォリオの多くのタグに保存する必要があります
これを行うより良い方法がありますか?この関係を保存するにはハンドルを使用するのは醜いです!
私はスキーマにforeignAliasを置くことで解決しました。 ありがとうございました! – Mauro