0

私はこのテーブル構造を持っています:

| ユーザー| ---たくさんあります>---| Preferences_users | ---<たくさんあります---| 好み|

プリファレンスは「名」や「名前」などですが、これらのプリファレンスの値は結合テーブルに保存されます。

CodeigniterとDatamapperORMを使用してリレーショナルテーブルをオブジェクトに取得していますが、結合テーブルでこの値を取得する方法がわかりません。

私はこれをやっています:

$user = new User();
$user->where('unique_url', $url)->get();
$user->preferences->get_iterated();

私の関係は、両方が持つように設定されており$has_many = array('tablename');、各テーブルから値を取得できます。

ただし、結合テーブルからテーブル列の値を取得できるようにしたいのですが、これを行う方法を知っている人はいますか?

ありがとう、

イアン

4

2 に答える 2

0

私はドキュメントで答えを見つけました:

$object->include_join_fields()

この方法にはオプションはありません。関係を追加する直前に設定してください。の前、または関連アイテム{$query}_related_{$model}を呼び出す前に使用できます 。get()関係の一部ではないテーブル上のすべてのフィールドが含まれ、先頭に。が付き"join_"ます。

このメソッドは、予期しない結果を返したり、深い関係でエラーをスローしたりする可能性があります。

使用法:

// Create User $u = new User(); $u->get_by_id($userid);

// get all alarms for this user, and include the extra 'wasfired'
field $u->alarm->include_join_fields()->get();

foreach($u->alarm as $alarm) {
    if($alarm->join_wasfired) {
        echo("{$alarm->name} was fired\n");
    } else {
        echo("{$alarm->name} was NOT fired\n");
    }
}

詳細については、結合フィールドの操作を参照してください。

于 2012-09-08T18:21:58.037 に答える
0

あなたはこれを使うことができます:

$Object->joinedObject->include_join_fields()->get();

次に、参加フィールドを取得します。

$Object->{join}_count;

join_ before field (count) nameドキュメントで参照されているように追加することに注意してください。

ありがとう。

于 2013-11-10T22:28:34.360 に答える