Log message #4124739

# At Username Text
# Mar 13th, 17:07 willem yes that is how it is set up and it is workgin, but in the join table i have more keys to link to other tables. and i would also like to see the actual content from that table and not only the ID (which i get now)
# Mar 13th, 17:06 neon1024 Anyway, good luck. That’s the end of my day :slightly_smiling_face:
# Mar 13th, 17:06 neon1024 Perhaps it’s as simple as clearing your orm cache!?
# Mar 13th, 17:04 neon1024 So this is how you’ve got your associations setup right?
# Mar 13th, 17:04 neon1024 https://github.com/davidyell/FFBE-Helper/blob/master/src/Model/Table/SpecialisationsTable.php#L42-L44
# Mar 13th, 17:03 neon1024 https://github.com/davidyell/FFBE-Helper/blob/master/src/Model/Table/PractisesTable.php#L39-L46
# Mar 13th, 17:03 neon1024 https://github.com/davidyell/FFBE-Helper/blob/master/src/Model/Table/UnitsTable.php#L99-L101
# Mar 13th, 17:03 neon1024 Ah, bad example I’ve not normalised that :P
# Mar 13th, 17:02 neon1024 Let’s try a Unit which Practises a Specialisation
# Mar 13th, 17:02 neon1024 Perhaps a code example will help
# Mar 13th, 17:01 willem well, i think because my association in the ApplicantTable is named ‘Degree’ instead of ‘ApplicantsDegrees’ ?
# Mar 13th, 17:01 neon1024 At least, that’s how I see it
# Mar 13th, 17:01 neon1024 The problem is what your Table class associations
# Mar 13th, 17:00 neon1024 If it did, why are you getting an exception for a missing association?
# Mar 13th, 17:00 willem i understand, but when i read this and check my db and classes it looks exactly like that
# Mar 13th, 17:00 neon1024 As it’s pretty key to database design and software design
# Mar 13th, 16:59 neon1024 This is important to learn
# Mar 13th, 16:59 neon1024 I feel it’s better to teach you why than tell you what code changes to make
# Mar 13th, 16:59 willem euh kinda, but i have all those table classes already? only ``` $this->belongsToMany('Degrees', [ 'foreignKey' => 'applicant_id', 'targetForeignKey' => 'degree_id', 'joinTable' => 'applicants_degrees' ]); ``` you say this should be hasMany ?
# Mar 13th, 16:58 neon1024 Does that make sense? :slightly_smiling_face:
# Mar 13th, 16:58 neon1024 As it is associated to the two tables to normalize that many to many database relationship
# Mar 13th, 16:57 neon1024 Which is why you can see the `CoursesMembershipsTable` from the book, has two `belongsTo` associations in it
# Mar 13th, 16:57 neon1024 This is what the book page is saying
# Mar 13th, 16:57 neon1024 So when you inverse that association, you also get `ApplicantsDegrees belongsTo Applicants` in your ApplicantsDegreesTable
# Mar 13th, 16:56 neon1024 Then change the association from `belongsToMany` to `Applicants hasMany ApplicantsDegrees`
# Mar 13th, 16:56 neon1024 So you want to actually create a join table class, ApplicantsDegreesTable
# Mar 13th, 16:56 neon1024 That will allow Cake to automatically understand the join, but you need more control!
# Mar 13th, 16:56 neon1024 However
# Mar 13th, 16:55 neon1024 Which is why you’ve declared a ‘joinTable’ in your association configuration in your Table class
# Mar 13th, 16:55 neon1024 So you have to put a join table in the middle
# Mar 13th, 16:55 neon1024 Instead of a belongsToMany
# Mar 13th, 16:55 neon1024 Then you have two belongsTo and hasMany
# Mar 13th, 16:55 neon1024 `[ ] >- [ ] -< [ ]`
# Mar 13th, 16:54 neon1024 So you put a table in the middle
# Mar 13th, 16:54 neon1024 You need to convert `[ ] >-< [ ]` style ERD into a One to Many, on either side to normalise the Many To Many
# Mar 13th, 16:54 neon1024 You know in a database, what normalisation is right?
# Mar 13th, 16:53 willem what association should i make and where?
# Mar 13th, 16:53 neon1024 You know that in a database you cannot have a Many to Many relationship right?
# Mar 13th, 16:53 willem I read that piece from the docs 100 time, just do not understand it, there is a ApplicantsDe
# Mar 13th, 16:52 neon1024 https://book.cakephp.org/3.0/en/orm/associations.html#using-the-through-option
# Mar 13th, 16:52 neon1024 Just copying and pasting random code from Slack into your project won’t magically make stuff work