So then... Does that mean that my problem is that I need to make my user_id in the projects table something like owner_id so that it won't get grouped in with the traditional habtm relationship that already exists with the user model?
Thanks for the assistance. - Keith On Oct 11, 9:17 pm, "Larry E. Masters aka PhpNut" <[EMAIL PROTECTED]> wrote: > Helps to read the manual: > > http://manual.cakephp.org/view/79/Relationship-Types > "...however, aliases must be unique both within a single model and on both > sides of a belongsTo/hasMany or a belongTo/hasOne relationship. Choosing > non-unique names for model aliases can cause unexpected behavior." > > -- > /** > * @author Larry E. Masters > * @var string $userName > * @param string $realName > * @returns string aka PhpNut > * @access public > */ > > On Sat, Oct 11, 2008 at 6:59 PM, <[EMAIL PROTECTED]> wrote: > > > Ok yea i am not sure abt the first part but David was right the > > debuging is impossible. > > > On 10/11/2008, David C. Zentgraf <[EMAIL PROTECTED]> wrote: > > > > A HABTM relationship will fetch data differently then a belongsTo > > > relationship. > > > HABTM will get you an array with multiple results, belongsTo just a > > > "flat" array. > > > $habtm = array( > > > [0] => array(['id'] =>, ...), > > > [1] => array(['id'] =>, ...) > > > ) > > > $belongsTo = array(['id'] =>, ...) > > > > When you specify multiple associations, you'll have to specify unique > > > names for them. > > > var $belongsTo = array( > > > 'Owner' => array(...) > > > ); > > > var $hasAndBelongsToMany = array( > > > 'Users' => array(...) > > > ); > > > > You shouldn't/can't mix different associations under the same name. > > > Your output is screwed up because you're mixing the "flat" array with > > > the "multi" array. You can either fix that manually (also see Set > > > Class) or just keep it simple and name your associations properly. > > > BTW, your debug output is virtually impossible to read, use > > > debug($array) or pr($array) to spot these kinda things a lot easier. > > > > On 11 Oct 2008, at 23:58, Keith wrote: > > > >> Hi Villas, > > > >> I tried clearing out the cache and that didn't fix it unfortunately. > > > >> I have the max debug level set. The code appears to be operating as > > >> programmed. > > > >> I tried a simple habtm with belongs_to in a scenario where I only had > > >> those two models and still got the same results. > > > >> I think it's a problem with how CakePHP is creating the array. The > > >> first element in the array has no numeric identifier. If you look > > >> back at the screenshot in the initial post you'll see that the first > > >> entry in the array is not [0] but rather is called [id] as it would be > > >> when there is a belongs_to and not a HABTM as well. > > > >> Unless I can figure something out I'm going to go ahead and just > > >> report it to cakePHP as a bug because there are legit reasons, like > > >> the one I'm building, where you'd want a habtm with a belongs_to in > > >> the same model. > > > >> - Keith > > > >> On Oct 11, 8:14 am, villas <[EMAIL PROTECTED]> wrote: > > >>> Hi Keith > > > >>> Thanks for the extra info although it still isn't very clear to me > > >>> from that what's going on. However, I would mention: > > >>> 1. Are you clearing your cache? You might have old data hanging > > >>> around. > > >>> 2. Did you try to set a higher debug level to get more info? > > >>> 3. Did you try to experiment with Bake? You can try different > > >>> scenarios which you should be able to get working without too much > > >>> sweat. > > > >>> Best regards. > > > >>> On Oct 11, 6:31 am, Keith <[EMAIL PROTECTED]> wrote: > > > >>>> Just as a clarification on why I have it set up this way... > > > >>>> The belongs_to is there because the users that creates the project > > >>>> becomes the owner. > > >>>> The has_and_belongs_to_many is there so that if a user wants someone > > >>>> outside their department to access it they can manually add them. > > > >>>> The problem looks like it's stemming from how cakePHP is handling > > >>>> the > > >>>> array... > > > >>>> for the belongs_to the array keys are based on field names like > > >>>> [id] & > > >>>> [first_name], etc. > > >>>> for the HABTM array the array keys are sequential as the "related > > >>>> users" foreach loop expects. > > > >>>> - Keith > > > >>>> On Oct 11, 1:18 am, Keith <[EMAIL PROTECTED]> wrote: > > > >>>>> It looks to me like this is what is happening, but it's very > > >>>>> strange... > > > >>>>> Even when no users are associated I'm getting 8 blank associated > > >>>>> users > > >>>>> which is exactly how many elements are in the array... > > > >>>>> So... > > > >>>>> It looks like it's taking the first character from each part of the > > >>>>> first entry in the array and putting it there... > > >>>>> K = Keith = First Name > > >>>>> M = Medlin = Last Name > > >>>>> etc. for each of the fields. > > > >>>>> So...I'm totally confused why the following code would produce > > >>>>> that: > > > >>>>> SQL Query: > > >>>>> SELECT `User`.`id`, `User`.`first_name`, `User`.`last_name`, > > >>>>> `User`.`email`, `User`.`date_created`, `User`.`last_login`, > > >>>>> `User`.`username`, `User`.`password`, `ProjectsUser`.`user_id`, > > >>>>> `ProjectsUser`.`project_id` FROM `users` AS `User` JOIN > > >>>>> `projects_users` AS `ProjectsUser` ON > > >>>>> (`ProjectsUser`.`project_id` = 1 > > >>>>> AND `ProjectsUser`.`user_id` = `User`.`id`) WHERE 1 = 1 > > > >>>>> Which returns a normal looking data set in SQL... > > > >>>>> Relevant View Code: > > >>>>> <?php > > >>>>> $i = 0; > > >>>>> foreach ($project['User'] as $user): > > >>>>> $class = null; > > >>>>> if ($i++ % 2 == 0) { > > >>>>> $class = ' class="altrow"'; > > >>>>> } > > >>>>> ?> > > >>>>> <tr<?php echo $class;?>> > > >>>>> <td><?php echo $user['id'];?></td> > > >>>>> <td><?php echo $user['first_name'];?></td> > > >>>>> <td><?php echo $user['last_name'];?></td> > > >>>>> <td><?php echo $user['email'];?></td> > > >>>>> <td><?php echo $user['date_created'];?></ > > >>>>> td> > > >>>>> <td><?php echo $user['last_login'];?></td> > > >>>>> <td><?php echo $user['username'];?></td> > > >>>>> <td><?php echo $user['password'];?></td> > > > >>>>> project['User'] is what you see dumped above the related users > > >>>>> table > > >>>>> so you can see that the array doesn't look strange in any way. Is > > >>>>> this possibly a bug that needs reporting to the CakePHP trac? > > > >>>>> - Keith > > > >>>>> On Oct 10, 11:58 pm, Keith <[EMAIL PROTECTED]> wrote: > > > >>>>>> Thanks for the response. > > > >>>>>> The documents table exists but I'm not having any issues with that > > >>>>>> relationship as it's a simple has_many and belongs_to with my user > > >>>>>> model. > > > >>>>>> The real issue is why, what appears to be a valid array is > > >>>>>> rendering > > >>>>>> the way it is in the related users table on the view for the > > >>>>>> projects > > >>>>>> page. > > > >>>>>> To get the array that's there I just did a print_r on the $users > > >>>>>> array > > >>>>>> that is automatically generated by CakePHP. As you can see > > >>>>>> there are > > >>>>>> no missing keys and the hash lines up correctly with the data. > > > >>>>>> The thing I cannot figure out is why I have those garbage rows > > >>>>>> in the > > >>>>>> table. My database is clean. It has 3 users with normal looking > > >>>>>> data. The projects_users join table is clean with: > > > >>>>>> user_id | project_id > > >>>>>> 3 | 1 > > >>>>>> 2 | 1 > > > >>>>>> The user_id associated with the table has a corresponding user > > >>>>>> as you > > >>>>>> can see in the array. So I'm not sure why it's chunking up data > > >>>>>> that > > >>>>>> way it is in the related users table. > > > >>>>>> Any ideas? Or can you think of anything specifically I should > > >>>>>> check > > >>>>>> on outside of running the queries directly in SQL which I've > > >>>>>> done and > > >>>>>> they return the correct data. I think the problem is in the > > >>>>>> view or > > >>>>>> how the users array is being interpreted possibly. > > > >>>>>> - Keith > > > >>>>>> On Oct 10, 6:48 pm, villas <[EMAIL PROTECTED]> wrote: > > > >>>>>>> Hi Keith > > > >>>>>>> Not sure you've provided enough info here, and what we see > > >>>>>>> looks a > > >>>>>>> bit confusing. > > >>>>>>> Is there also a 'documents' table? > > >>>>>>> Did you set up a join table for the HABTM? > > >>>>>>> What is the logic of having a Project belonging to a User in > > >>>>>>> addition > > >>>>>>> to using a join table so that many Projects may belong to a User? > > >>>>>>> Maybe what you have written makes more sense to others, but it > > >>>>>>> suggests to me that you probably didn't read the book.cakephp.org > > >>>>>>> carefully enough. Have a good look again at the Models section > > >>>>>>> and > > >>>>>>> then post a followup question, bearing in mind my comments > > >>>>>>> above and > > >>>>>>> we can try our best to assist you better. > > > >>>>>>> Kind regards. > > > >>>>>>> On Oct 10, 9:44 pm, Keith <[EMAIL PROTECTED]> wrote: > > > >>>>>>>> I am running into a strange issue when I've got the following > > >>>>>>>> model > > >>>>>>>> structure: > > > >>>>>>>> User: > > >>>>>>>> Has_Many: Projects > > >>>>>>>> HABTM: Projects > > > >>>>>>>> Projects: > > >>>>>>>> Belongs_To: User > > >>>>>>>> HABTM: Users > > > >>>>>>>> So...everything works fine. When I create a new project and > > >>>>>>>> select > > >>>>>>>> multiple users they are indeed associated with the project as > > >>>>>>>> is the > > >>>>>>>> correct user who "owns' the project as per the Belongs_To model > > >>>>>>>> relationship. > > > >>>>>>>> However... > > > >>>>>>>> In the scaffolded view I get a really strange result that the > > >>>>>>>> SQL > > >>>>>>>> query doesn't actually generate when I run it in SQL... > > > >>>>>>>> I get a really bizarre output in the Related Users. Here's a > > >>>>>>>> screenshot:http://www.keithmedlin.com/habtm_error.png > > > >>>>>>>> Any idea on why I've got what looks like a normal array > > >>>>>>>> rendering > > >>>>>>>> pretty garbled? > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
