2011-04-16 2 views
4

これを動作させるにはどうすればよいですか?Kohanaに参加していないテーブル3.1 ORM

$stuff = ORM::factory('mytable') 
    ->with('user') 
    ->with('other_stuff') 
    ->find_all(); 

私の関係はすべてセットアップされており、他のクエリを実行するとすべてが機能しているようです。ただし、上記のクエリでは、テーブルユーザーには参加しませんからmytableです。私はそれが1つのmytableのための多くのユーザーがある可能性がありますので、それが考えられると思う。参照で

は、私がここで使用する必要があるかもしれないと思うjoin()と呼ばれる方法があるが、彼らはそれに任意の情報を与えていない、と私はここで検索したものではありませんうまくいかない。

withの代わりにjoinを使用しようとすると、テーブルに参加しようとしますが、「結合」情報は含まれていません。空の場合は()となります。

私のORM DBの関係はすべて正しく設定されているので、私はちょっと困惑しています。

答えて

5

Kohanaはまともな文書を持っていますが、適切な場所で探していないのは...まあ、あなたの問題です。どのように

$stuff = ORM::factory('mytable') 
     ->join('users','LEFT') 
     ->on('users.mytable_id','=','mytables.id') 
     ->find_all(); 
+0

それでした。私は ' - > on()'のものを見逃していました。 /一息。 ORMでDBクエリービルダーのメソッドを使用できることはわかりませんでした。私は私が行くようにKohanaを学んでいます、そして、それについてのドキュメントには何もありませんでした!しかし、今私は知っている、と私はあなたの助けを大変ありがとう! -Brian – DondeEstaMiCulo

+0

迅速なフォローアップの質問...すべての "with"テーブルから正しいDB結果を得ていますが、 "joined"テーブルのものはありません。他のフィールドに加えて、usersテーブルから1つのフィールドのデータを取得するにはどうすればよいですか?どうも。 – DondeEstaMiCulo

+2

- > select( 'joined_table。*') – Kemo

1
SELECT * from table1 
LEFT JOIN table2 
ON table1.id = table2.id 
AND table2.flag = 'Y' 
AND table2.siteid = '12' 
WHERE table1.siteid = '12' 

ORM::with()は、あなたがあなたの処分にORMで使用するすべてのDatabase_Query_Builderのメソッドを持っているものの、(所属と1持っている)の関係を読み込み、1対1のために使用されています上記のクエリはコハナのORM形式で書かれていますか?下の方が正しいですか

$stuff = ORM::factory('table1') 
    ->join('table2','LEFT') 
    ->on('table1.id','=','table2.id') 
    ->on('table2.flag','=','Y') 
    ->on('table2.siteid', '=', '12') 
    ->where('table1.id', '=', '12') 
    ->find_all(); 
関連する問題