You don't really need to add a constraint if your code if you specify
the User.id as a condition and run your query on the User model.

In Project model:
        
public function fetchAll($user_id = null)
{
        if (!empty($user_id))
        {
                return $this->User->find(
                        'all',
                        array(
                                'conditions' => array(
                                        'User.id' => $user_id
                                ),
                                'contain' => array(
                                        'Project' => array(
                                                'Site'
                                        )
                                )
                        )
                )
        }
        else
        {
                // get all projects
        }
}

In ProjectsController, just pass $this->Auth->user('id'). The else
block above would be used for an admin action, or a view that listed
all project names for whatever reason.

On Fri, Sep 28, 2012 at 2:10 PM, Clark Ritchie <clarkritc...@gmail.com> wrote:
> I'm looking for some guidance here.
>
> I have:
>
> User hasAndBelongsToMany Project
>
> Schema:
> Users.id
> Users.name
> ...
>
> Project hasAndBelongsToMany User
>
> Schema:
> Project.id
> Project.name
> ...
>
> My join table:
>
> projects_users.user_id
> projects_users.project_id
>
> Site belongsTo Project
>
> Site.id
> Site.project_id
> ...
>
>
> Users-Projects works OK, I can assign a user to one or many projects.
> Sites-Projects works OK, I can assign a Site to a Project.
>
> Now, I want to make sure the user can only find sites that match the
> projects to which they are assigned.  I assume I need to put a condition
> into the Site's beforeFind function, but I can't figure it out.
>
> Any guidance here?
>
> --
> Like Us on FacekBook https://www.facebook.com/CakePHP
> Find us on Twitter http://twitter.com/CakePHP
>
> ---
> You received this message because you are subscribed to the Google Groups
> "CakePHP" group.
> To post to this group, send email to cake-php@googlegroups.com.
> To unsubscribe from this group, send email to
> cake-php+unsubscr...@googlegroups.com.
> Visit this group at http://groups.google.com/group/cake-php?hl=en.
>
>

-- 
Like Us on FacekBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com.
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.


Reply via email to