2011-07-30 38 views
-1

で別のものに関連している場合:タグクライアント:私は2つのテーブルを持っています。クライアントは多くのタグを持つことができ、タグは多くのクライアントを持つことができます。私は、関係を保存するために別の結合テーブルを使用しています。チェック一つのオブジェクトがCodeIgniterのと<a href="http://datamapper.wanwizard.eu/" rel="nofollow">Datamapper</a>を使用してDataMapperの

私は個々のタグを管理するためのページを用意しています。ここでは、すべてのクライアントを繰り返し処理していて、それぞれがこのタグに関連しているかどうかを確認したいと思います。

以下のコードの????は、チェックボックスをオンにするかどうかを決定します。クライアントにタグがある場合はTRUE、そうでない場合はFALSEになります。 $clientDatamapperと、このループで$tagに関連している場合

<h2>Manage Tag: <?php echo $tag->name; ?></h2> 

<?php foreach ($clients as $client): ?> 

    <label> 
     <?php echo form_checkbox('client_id[]', $client->id, ????); ?> 
     <?php echo $client->name; ?> 
    </label> 

<?php endforeach; ?> 

はどうすれば確認できますか?およそ

$client->is_related_to($tag) 

または

$client->is_related_to('tag', $tag->id) 

これは、追加のカウントを発射することをhttp://datamapper.wanwizard.eu/pages/count.html#is_related_to

注を参照してくださいどのように

答えて

2

()クエリ、あなたは$タグ - >クライアントをフェッチする方が良いかもしれません、あなたのループをチェックインしてください。

+0

あなたの編集ごとに:2番目の解決策がうまくいかなかった、 'all_array_uses_ids'または何かを有効にする必要がありますか?私のオリジナルの回避策は '$ tag-> client'を一回ループし、クライアントIDを配列に入れてから、' in_array($ client-> id、$ related_tag_ids) 'を使って追加のクエリを生成しませんでした。私は、生成されたクエリを見て、何が起こっているか見る必要があります。時には効率は優雅よりも優れています。 –

+0

少し遅れますが、はい、 'all_array_uses_ids'が必要です。私はすべてのアプリケーションでそのデフォルトを持っているので、申し訳ありませんが言及するのを忘れていました... – WanWizard