私はこれに対する答えを見つけるためにすばやく検索しましたが、正直なところ、何を検索するのかは100%ではありません。Doctrine Record Objectを動的に作成する - symfony 1.4
これは実際の問題よりも最適化の問題ですが、私はその助けをすることができます。
私はそうのような「オブジェクトを取得または作成」するためにいくつかのメソッドを作成している私のSymfony 1.4プロジェクトで:
protected function getOrCreateManufacturer($name)
{
$manufacturer = ManufacturerTable::getInstance()->findOneBy('name', $name);
if(!$manufacturer)
{
$manufacturer = new Manufacturer();
$manufacturer->setName($name);
}
return $manufacturer;
}
私はまったく同じことを行うすべてが異なるオブジェクトのためのこれらのいくつかを持っています。私は、彼らがすべてのようにのようにそれを呼び出すことができるようにこれらのメソッド内のコードの多くを置き換えることができますメソッドを作成しようとしています:
protected function getOrCreateManufacturer($name)
{
return $this->getOrCreateObject('Manufacturer', 'name', $name);
}
protected function getOrCreateObject($table, $field, $value)
{
$object = Doctrine::getTable($table)->findOneBy($field, $value);
if(!$object)
{
// create object here
$object->set($field, $value);
}
return $object;
}
をしかし、私はインスタンスを作成することができます方法を見つけるように見えることはできません私のオブジェクトの。
私が作成しようとしているオブジェクトはすべてsfDoctrineRecord
です。
もし私がそれを行うことができないなら、それはうまくいくが、それは可能ならば涼しいだろう。
乾杯。
と47分後、私はそれを考え出しました。 '$ table'パラメータで' new'を呼び出すだけで、オブジェクトを作成できます。マジック。 – noShowP