0

Kohana3.2とKohanaORMを使用してアプリケーションを構築しています。

アプリケーションにはシステムがあります。システムにはコンポーネントが含まれています。システムには複数のコンポーネントが含まれる場合がありますが、同じタイプの複数のコンポーネントも含まれる場合があります。たとえば、System_Aには10個のComponent_Yと3個のComponent_Zがあります。

したがって、ピボットテーブルにbelongs_toフィールドを2つだけ持つのではなく、カウントも保存したいと思います。

has-many-throughを使用するだけでは、カウントにアクセスできません。ORMがない場合、カウントをSQLのコンポーネントに結合するだけです。これは、カウントがシステムとコンポーネントの組み合わせで一意であり、特定のシステムのコンテキストでオブジェクトにアクセスしたときにコンポーネントのカウントにアクセスできるためです。

コハナORMでこれを行うにはどうすればよいですか?

4

2 に答える 2

0

この方法で部分的に解決しました:

protected $_has_many = array(
        'omvormer' => array(
            'model' => 'omvormer', 
            'through' => 'systeemomvormer'
        ),
        'systeemomvormer' => array(
            'model' => 'systeemomvormer',
        )
    );

にピボット テーブルsysteemomvormerを個別に追加しましたsysteem

私は今これを行うことができます:

$so = ORM::factory("systeemomvormer");
$so->where('systeem_id', '=', $systeem_id);
$so->where('omvormer_id', '=', $omvormer_id);
$result = $so->find();
$result->aantal = $omvormer_count;

しかし、結果が得られないため、まだ部分的な解決策にすぎませんupdate()。コハナは、結果がロードされていないと言います。ただし、それはこの質問の範囲外であり、そのために新しい質問を開きます。

これも役に立ちました: http://forum.kohanaframework.org/discussion/7247/kohana-3-orm-save-for-update-a-many-to-many/p1

于 2012-12-08T16:06:44.933 に答える
0

2 つのキー以外のデータをジャンクション テーブルに格納するには、そのモデルを作成する必要があります。

そう、

system _has_many system_component
component _has_many system_component
system_component _belongs_to component
system_component _belongs_to system

ただし、この方法でカウントを保存する必要がない場合があります。代わりに、次のことができます。

$system->components->count_all();

次に、それらにアクセスするには:

foreach($system->components->find_all() as $component)
  echo $component->component->name;
于 2012-12-15T07:28:21.910 に答える