On Monday, 28 May 2012 20:14:05 UTC+1, Benjamin Allison wrote:
>
> Ah. I just got disuaded because of this portion of the Cook Book:
>
> It is sometimes desirable to store additional data with a many to many 
> association. Consider the following
>
> *Student hasAndBelongsToMany Course*
>
> *Course hasAndBelongsToMany Student*
>
> In other words, a Student can take many Courses and a Course can be taken 
> by many Students. This is a simple many to many association demanding a 
> table such as this:
>
> id | student_id | course_id
>
> Now what if we want to store the number of days that were attended by the 
> student on the course and their final grade? The table we’d want would be:
>
> id | student_id | course_id | days_attended | grade
>
> The trouble is, hasAndBelongsToMany will not support this type of scenario 
> because when hasAndBelongsToMany associations are saved, the association is 
> deleted first. You would lose the extra data in the columns as it is not 
> replaced in the new insert.
>
> *The way to implement our requirement is to use a join model, otherwise 
> known as a hasMany throughassociation*. That is, the association is a 
> model itself. So, we can create a new model CourseMembership. Take a look 
> at the following models.:
>
> On Monday, 28 May 2012 12:35:06 UTC-4, Ratty wrote:
>>
>> You can have extra fields with no problem at all. If you look at the 
>> models, both your user and survey model will have the join table 
>> (users_surveys) defined with the key that it is joined on. 
>>
>> All you will have to do is generate a model for users_surveys too so 
>> that you can extract the extra data and provide queries to use both 
>> user_id and survey_id instead of the id field of the join table. 
>> Basically, it is quite straightforward to do this, but Cake will not 
>> generate all the code for you. 
>>
>
On Monday, 28 May 2012 20:14:05 UTC+1, Benjamin Allison wrote:
>
> Ah. I just got disuaded because of this portion of the Cook Book:
>
> It is sometimes desirable to store additional data with a many to many 
> association. Consider the following
>
> *Student hasAndBelongsToMany Course*
>
> *Course hasAndBelongsToMany Student*
>
> In other words, a Student can take many Courses and a Course can be taken 
> by many Students. This is a simple many to many association demanding a 
> table such as this:
>
> id | student_id | course_id
>
> Now what if we want to store the number of days that were attended by the 
> student on the course and their final grade? The table we’d want would be:
>
> id | student_id | course_id | days_attended | grade
>
> The trouble is, hasAndBelongsToMany will not support this type of scenario 
> because when hasAndBelongsToMany associations are saved, the association is 
> deleted first. You would lose the extra data in the columns as it is not 
> replaced in the new insert.
>
> *The way to implement our requirement is to use a join model, otherwise 
> known as a hasMany throughassociation*. That is, the association is a 
> model itself. So, we can create a new model CourseMembership. Take a look 
> at the following models.:
>
> On Monday, 28 May 2012 12:35:06 UTC-4, Ratty wrote:
>>
>> You can have extra fields with no problem at all. If you look at the 
>> models, both your user and survey model will have the join table 
>> (users_surveys) defined with the key that it is joined on. 
>>
>> All you will have to do is generate a model for users_surveys too so 
>> that you can extract the extra data and provide queries to use both 
>> user_id and survey_id instead of the id field of the join table. 
>> Basically, it is quite straightforward to do this, but Cake will not 
>> generate all the code for you. 
>>
>
On Monday, 28 May 2012 20:14:05 UTC+1, Benjamin Allison wrote:
>
> Ah. I just got disuaded because of this portion of the Cook Book:
>
> It is sometimes desirable to store additional data with a many to many 
> association. Consider the following
>
> *Student hasAndBelongsToMany Course*
>
> *Course hasAndBelongsToMany Student*
>
> In other words, a Student can take many Courses and a Course can be taken 
> by many Students. This is a simple many to many association demanding a 
> table such as this:
>
> id | student_id | course_id
>
> Now what if we want to store the number of days that were attended by the 
> student on the course and their final grade? The table we’d want would be:
>
> id | student_id | course_id | days_attended | grade
>
> The trouble is, hasAndBelongsToMany will not support this type of scenario 
> because when hasAndBelongsToMany associations are saved, the association is 
> deleted first. You would lose the extra data in the columns as it is not 
> replaced in the new insert.
>
> *The way to implement our requirement is to use a join model, otherwise 
> known as a hasMany throughassociation*. That is, the association is a 
> model itself. So, we can create a new model CourseMembership. Take a look 
> at the following models.:
>
> On Monday, 28 May 2012 12:35:06 UTC-4, Ratty wrote:
>>
>> You can have extra fields with no problem at all. If you look at the 
>> models, both your user and survey model will have the join table 
>> (users_surveys) defined with the key that it is joined on. 
>>
>> All you will have to do is generate a model for users_surveys too so 
>> that you can extract the extra data and provide queries to use both 
>> user_id and survey_id instead of the id field of the join table. 
>> Basically, it is quite straightforward to do this, but Cake will not 
>> generate all the code for you. 
>>
>
Fair enough mate, if that is what the manual says then go with that :)

The last time I looked at this was Cake 1.3 and my data was such that it's 
never deleted.

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to