Nous sommes désolés de poser toutes ces questions sur Kohana. Ils sont généralement ignorés. Je pense que je viens de trouver un bug. Je fais une jointure entre deux tables qui ne sont pas directement liées.Bug dans Kohana 3 ORM?
$results = ORM::factory('foo')->join("bar")->on("foo.foreign_id", "=", "bar.id");
Cela génère une requête qui ne résout pas les noms de table explicitement:
SELECT * FROM `foo` JOIN `bar` ON (`foo`.`foreign_id` = `bar`.`id`)
Ce qui donne (phpMyAdmin) une table qui ressemble à ceci:
id time foreign_id blah_int id baz
4 1291851245 3 0 3 52501504
avis il y a deux colonnes id
, une pour la table foo
et une pour bar
. Ceci est un vrai problème. Parce que maintenant, dans mes résultats, si la boucle I à ...
foreach ($results as $result) {
echo $result->id; // prints 3!!!
}
Parce que mes résultats devraient être foo
objets, je compte obtenir un id de 4, mais il me donne 3 à cause de la jointure. Est-ce un bug dans la bibliothèque ORM? Dois-je utiliser une méthode différente pour limiter mes résultats à la requête? Je ne veux vraiment pas faire deux requêtes séparées où je charge tous les identifiants bar
, puis chargez mes foo
de cette façon, mais il semble que je dois le faire.
Avez-vous essayé les relations ORM (http://kohanaframework.org/guide/tutorials.orm)? Quelque chose comme foreach ($ foo-> barres comme $ bar) {...} – biakaveron
Les tables ne sont pas liées, sauf indirectement. Ils partagent une relation avec une autre table. Donc mon alternative est de charger les ids de la table en commun en premier, mais je préférerais ne pas le faire. – Tesserex