Kohanaについて、これらすべての質問をおねがいします。彼らは通常無視されます。私はちょうどバグを見つけたと思う。私は直接関係していない2つのテーブルを結合しています。Kohanaのバグ3 ORM?
SELECT * FROM `foo` JOIN `bar` ON (`foo`.`foreign_id` = `bar`.`id`)
(phpMyAdminの中で)このようになります表示します:
$results = ORM::factory('foo')->join("bar")->on("foo.foreign_id", "=", "bar.id");
これは、明示的にテーブル名を解決できないクエリを生成
id time foreign_id blah_int id baz
4 1291851245 3 0 3 52501504
お知らせがあります2つのid
列、1つはfoo
テーブル、もう1つはbar
です。これは本当の問題です。今、私の結果では、私の結果はfoo
オブジェクトでなければなりませんので、私のループ
foreach ($results as $result) {
echo $result->id; // prints 3!!!
}
...ている場合ので、私は4のIDを取得することを期待し、それがために参加の私に3を与えています。これはORMライブラリのバグですか?別の方法を使用してクエリから結果を制限する必要がありますか?私は実際には、すべてのbar
のIDをロードし、次に私のfoo
のように2つの別のクエリを実行したくないのですが、それは私のように見えます。
$results = DB::select()->from('foo')->join('bar')->on("foo.foreign_id", "=", "bar.id")->execute();
あなたはそれがあったとして、あなたはORMを使用しない限り、いくつかの列の別名が、しかし、あなたのクエリを動作させるために特定する必要があります。
あなたはhttp://kohanaframework.org/guide/tutorials.orm(ORM関係を試してみました)? foreachのようなもの($ barとしての$ foo-> bars){...} – biakaveron
テーブルは間接的なものを除き、関連していません。彼らは別のテーブルとの関係を共有します。だから、私の代わりにテーブルからのIDを共通にロードすることですが、私はむしろそうしません。 – Tesserex