J'ai un modèle, appelons-le Robot, qui a de multiples relations manyToMany avec d'autres modèles - Part, Country et Permision. Les modèles de relation étant RobotsParts, RobotsCountries et RobotsPermissions.PhalconPHP - obtenir un objet spécifique avec plusieurs relations
Chaque robot peut avoir plusieurs ou plusieurs pièces, pays et autorisations liés.
Pour obtenir tous les robots avec une certaine partie, PhalconPHP le rend facile. (les alias sont correctement définis dans les modèles, bien sûr).
$part = Part::findFirstByName("arm");
$robotsWithPart = $part->robots;
La même chose vaut pour les robots avec un pays:
$country = Country::findFirstByCode("HR");
$robotsWithCountry = $country->robots;
Mais comment peut-on obtenir que des robots avec une certaine partie, le pays et la permission?
J'ai eu des tentatives futiles comme:
$country = Country::findFirstByCode("HR");
$part = Part::findFirstByName("arm");
$robots = $country->getRobots([
'conditions' => "(partId = :pid:)",
'bind' => [
'pid' => $part->id
]
]);
Mais, bien sûr, PARTID est pas reconnu comme il ne fait pas partie de l'un des modèles sélectionnés;
Les paramètres que la fonction getRelated ('Robot', [params]) accepte ne sont que les colonnes du modèle Robot. Le reste lance une erreur "Phalcon \ Mvc \ Model \ Exception: Column 'partId' n'appartient à aucun des modèles sélectionnés". – Vorta
@Vorta, aha, on dirait que ce ne serait pas possible. Vous devrez utiliser une requête personnalisée. Vérifiez ma réponse mise à jour, il pourrait vous aider à démarrer! – Timothy
Requête personnalisée c'est. Cependant, une petite correction pour ce qui précède: '$ resultat = Robot :: query()'. Tout le reste reste le même. J'ai testé la solution et j'obtiens les résultats attendus. Pas la plus belle chose, mais fait le travail. Je vous remercie! – Vorta