2

これは私の問題です:

  • SomeTable と SomeOtherTable の間には 1 対 N の関係があります。
  • ユーザーは行 b を変更したいが、行 a が行 b と関係がある場合にのみ変更できる
  • したがって、SomeTable の行 a が SomeOtherTable の行 b と関係があるかどうかを調べる必要があります。

可能であれば、一般的な回答を提供してから、symfony 1.4 と doctrine に対する具体的な回答を提供してください。これは、より多くの人にとっても、複数のフレームワークで作業する私にとっても役立つでしょう。

一部のテーブルの CRUD に対するアクセス許可を処理するためにこれが必要です。

これは非常に頻繁に発生する問題だと思います

この問題を解決するパターンまたはプラグインがあるのではないでしょうか?

  • symfony キャッシングシステムを最大限に活用するにはどうすればよいですか?

現在、私はこれを思いついた:

$someRow = Doctrine_Query::create()->from('SomeTable')->
  where('id = ?', $id_someTable)->
  andWhere('id_relation = ?',$id_someOtherTable)->execute();
return $someRow->count() > 0;

何故かこれは醜いと思う…

4

1 に答える 1

1

とにかく、あなたのタイトルはあなたのテキストよりも露骨です。

Table.php で呼び出されるgetRelations関数があります。したがって、オブジェクトへのすべての関係を取得し、その結果で必要なものを作成できます。

/**
 * Retrieves all relation objects defined on this table.
 *
 * @return array
 */
public function getRelations()
{
    return $this->_parser->getRelations();
}

そう :

$relations = Doctrine_Core::getTable('SomeTable')->getRelations();

詳細については、パーサーの getRelations メソッドをご覧ください

編集:

そして、特定のリレーションを試したい場合は、 を使用できますhasRelation

于 2012-04-17T17:09:48.880 に答える