Your solution sounds pretty much identical to the one I'm using in my
current project.

As such, I can't offer any 'there is a better way to do this', however
I can confirm that at least two people have come to the same
solution ;-)

I'm interested in hearing other thoughts on this too.

On Jan 31, 5:55 pm, dw <[EMAIL PROTECTED]> wrote:
> I have an Employees table, which consists of data from another source
> which is read-only. I have a second table, Profiles, which contains
> data that a user can edit. The Employees model hasOne Profile, and the
> Profile belongsTo the Employee. Each Profile also belongs to a
> Category.
>
> class Employee extends AppModel {
>         var $name = 'Employee';
>         var $hasOne = array(
>                 'Profile' => array('className' => 'Profile',
>                                         'foreignKey' => 'employee_id')
>         );
>
> }
>
> class Profile extends AppModel {
>         var $name = 'Profile';
>         var $belongsTo = array(
>             'Employee' => array('className' => 'Employee',
>                                 'foreign_key' => 'employee_id'),
>             'Category' => array('className' => 'Category',
>                                                                 'foreignKey' 
> => 'category_id'
>                         )
>     );
>
> }
>
> My issue stems from the fact that not all Employees have a Profile.
>
> data examples:
>
> With profile:
>
> Array
> (
>     [Employee] => Array
>         (
>             [id] => 131348
>             [name] => Jane Smith
>         )
>
>     [Profile] => Array
>         (
>             [id] => 1
>             [employee_id] => 131348
>             [category_id] => 4
>
>             [Category] => Array
>                 (
>                     [id] => 4
>                     [descr] => Full-time
>                 )
>         )
> )
>
> without profile (the hasOne relationship attaches a blank profile
> record):
>
> Array
> (
>     [Employee] => Array
>         (
>             [id] => 131464
>             [name] => John Doe
>         )
>
>     [Profile] => Array
>         (
>             [id] =>
>             [employee_id] =>
>             [category_id] =>
>         )
> )
>
> The data for the Employees table comes, as i said, from an outside
> source. Profiles are then added and edited by the users. At first i
> had problems referring to the Category description in the Employees
> view, since the Profile record which has the category_id does not
> exist for some Employees. I got around that by checking in the
> employees_controller view function for the existence of a Profile. If
> it exists, an Employee view is rendered which has the Profile (and
> Category) information in it. In that view an edit button is provided
> to edit the profile record. If the profile does not exist, a view is
> rendered which doesn't have any profile information, and the 'edit
> button' actually refers to the add function in the profiles_controller
> (taking the employee.id has an argument).
>
> Like i said, this is working, but it doesn't seem like the most
> elegant solution. Am i missing an easier way to handle this situation?
>
> My second issue (which is similar), comes into play when i have the
> user run a list of employees. This breaks because, again, not all
> employees have information in their profile, so there is no related
> category record. I got around this by doing this in the view:
> empty($employee['Profile']['category_id'])?'':$employee['Profile']
> ['Category']['descr']
> That is, basically checking for the existence of the category_id and
> echoing a blank space if it doesn't exist.
>
> Is what i am doing here my best choice, or is there a better way? I
> feel like i may be missing something. I appreciate the feedback.
>
> thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to