Print

Print


Hi Ken,

Your proposed structure for the joining table (many-to-many relationship) with 
additional attributes is exactly how I would approach it.  I have only worked 
with that model in CakePHP once, and it was many years ago. I wouldn't be 
surprised though if the framework does not provide a way to generate it via 
scaffold, and you need to set it up manually.  I think Cake builds the 
many-to-many model via belongsToMany(). There are some notes in the 
documentation on how to use the 'through' attribute to deal with extra 
conditions in the join table:
https://book.cakephp.org/3.0/en/orm/associations.html#using-the-through-option

I'm sorry I can't help too specifically with CakePHP, but the student <--> 
course | days_attended | grade model in the documentation example seems 
similar to your model. 

Good luck,

-- 
++++++++++++++++++++
Michael Berkowski
University of Minnesota Libraries
[log in to unmask]
612.626.6137
PGP Public Key: http://z.umn.edu/mjbpubkey
++++++++++++++++++++


On Wed, 31 May 2017, Ken Irwin said:

> Hi folks,
> 
> TL;DR: when you have a database table whose whole job is to contain pairs of keys connecting ID's of related tables, what if you want to say more about that relationship (e.g. a time-frame in which that relationship existed)? I'm particularly working in a Rails-like CakePHP context.
> 
> My particular case:
> 
> I'm working on a database project with a faculty member who's interested in certain women who were associated with particular convents once upon a time.
> 
> Our prototype database has tables for
> 
> Women
> -id
> -name
> -birth
> -death
> -etc
> 
> Convents
> -id
> -name
> -location
> -etc
> 
> Convents_Women
> -woman_id
> -convent_id
> 
> I'm working in CakePHP, which has a Rails-like db structure, and this is how it likes to handle relationships.
> 
> What I'm wondering is this: if there is other information about a relationship other than that it exists (e.g. the dates during which a person was at a convent; what their role was during that time, etc), is there a preferred / customary way of representing that? I had imagined that the convents_women table might look like:
> 
> -woman_id
> -convent_id
> -role
> -start_date
> -end_date
> 
> But the Cake/Rails scaffolding system doesn't seem to have a way of working with that. Or at least I haven't found the magic words to find a good explanation.
> 
> I could, I imagine, subsequently add table fields to convents_women; but I wonder where we'd want to add that information in a generic application scaffold, or would I have to build some cockamamie extra view?
> 
> I'd welcome any thoughts on the matter. I'd also be delighted to hear from other folks who are using CakePHP. I'm very new to it.
> 
> Thanks
> Ken