Reputation: 576
I have 3 tables and I use YAML, which is connect to each other like this:
Trainings:
oneToMany:
exerciseTrainings:
targetEntity: ExerciseTraining
mappedBy: training
cascade: ["persist", "merge"]
joinColumn:
name: id
referencedColumnName: training_id
Exercises:
oneToMany:
exerciseTrainings:
targetEntity: ExerciseTraining
mappedBy: exercise
cascade: ["persist", "merge"]
joinColumn:
name: id
referencedColumnName: exercise_id
trainingExercises:
manyToOne:
exercise:
targetEntity: Exercise
inversedBy: exerciseTrainings
joinColumn:
name: exercise_id
referencedColumnName: id
training:
targetEntity: Training
inversedBy: exerciseTrainings
joinColumn:
name: training_id
referencedColumnName: id
I need "exercise name" from table Exercises(basically name coming from exercise_translation, but I think it's not a problem) that related to my Trainings and also I need "sets" from exerciseTrainings table. So I have training and try to join tables:
$training = $em->getRepository('TrenkaTrainingBundle:Training')->findOneByAlias($alias);
$exercises = $em
->getRepository('TrenkaTrainingBundle:Exercise')
->createQueryBuilder('e')
->innerJoin('e.exerciseTrainings', 't')
->where('t.training_id = ' . $training->getId())
->getQuery()
->getResult();
But I get this error:
Class TrainingBundle\Entity\ExerciseTraining has no field or association named training_id
Maybe someone has same structures and know how to make it work? Also how to presented values from 2-3 tables in TWIG?
Upvotes: 0
Views: 54
Reputation: 782
You doesn't have training_id field in your ExerciseTraining entity so you can't use it in your where clause, in your ExerciseTraining entity you have training field so you can try something like this :
$exercises = $em
->getRepository('TrenkaTrainingBundle:Exercise')
->createQueryBuilder('e')
->innerJoin('e.exerciseTrainings', 'et')
->where('et.training = :training')
->setParameter('training', $training)
->getQuery()
->getResult();
Upvotes: 1