Kohana에 대한 모든 질문은 죄송합니다. 그들은 보통 무시 당한다. 방금 버그를 발견했다고 생각합니다. 직접 관련이없는 두 테이블을 조인하고 있습니다.Kohana 3 ORM의 버그?
SELECT * FROM `foo` JOIN `bar` ON (`foo`.`foreign_id` = `bar`.`id`)
(phpMyAdmin을에서)이 보이는 테이블 제공 : 공지 사항
id time foreign_id blah_int id baz
4 1291851245 3 0 3 52501504
가를
$results = ORM::factory('foo')->join("bar")->on("foo.foreign_id", "=", "bar.id");
이 명시 적으로 테이블 이름을 확인하지 않는 쿼리를 생성 두 id
열, 하나는 foo
테이블 용이고 다른 하나는 bar
용입니다. 이것은 실제 문제입니다. 지금, 내 결과에서, 만약 내가 루프
foreach ($results as $result) {
echo $result->id; // prints 3!!!
}
... 통해 내 결과가 foo
오브젝트를해야하기 때문에 때문에, 나는 4의 ID를 얻을 것으로 예상하지만, 때문에 참여의 날 (3)을주고있다. 이것은 ORM 라이브러리의 버그입니까? 쿼리 결과를 다른 방법으로 제한해야합니까? 난 정말 내가 bar
의 ID를 모두로드하고 나서 foo
그런 식으로로드 두 개의 별도의 쿼리를하고 싶지 않아,하지만 내가해야 할 것 같습니다.
$results = DB::select()->from('foo')->join('bar')->on("foo.foreign_id", "=", "bar.id")->execute();
당신은 그것이 당신이 ORM을 사용하지 않는 일부 열 별칭 그러나 쿼리 작업을 특정해야합니다
이 http://kohanaframework.org/guide/tutorials.orm (당신이 ORM 관계를 시도 다음과 같이
가 조회를 다시 작성(here for more information 참조))? foreach와 같은 것 ($ bar처럼 $ foo-> bars) {...} – biakaveron
테이블은 간접적으로 제외하고는 관계가 없습니다. 그들은 다른 테이블과 관계를 공유합니다. 그래서 내 대안은 먼저 테이블에서 ID를로드하는 것이지만 오히려하지 않을 것입니다. – Tesserex