2014-01-15 3 views
0

В основном у меня есть 3 пользователя таблицы, рабочие места и users_jobs.Реляционные модели CakePHP

users_jobs is id, job_id, user_id и в основном используется для отслеживания заданий, которые пользователь назначил.

Работы могут быть назначены. Назначены путем добавления/удаления записей в таблицах users_jobs.

С точки зрения cakephp, я пытаюсь понять, как моделировать это. Так что для меня есть модель работы, которая имеет атрибут

public $hasAndBelongsToMany = array(
    'User' => array(
     'className' => 'User', 
     'joinTable' => 'users_jobs', 
     'foreignKey' => 'job_id', 
     'associationForeignKey' => 'user_id' 
    ) 
); 

Моя модель пользователя имеет атрибут

public $hasAndBelongsToMany = array(
    'Job' => array(
     'className' => 'Job', 
     'joinTable' => 'users_jobs', 
     'foreignKey' => 'user_id', 
     'associationForeignKey' => 'job_id' 
    ) 
); 

В моей JobsController.php я есть функция, которая уберите привязку предназначена для отмены назначения пользователю работа. как я могу изменить таблицу users_jobs, удалить отношение, не удаляя пользователя или работу?

+0

Там будет ответ для вас: http://stackoverflow.com/questions/4006052/deleting-habtm-association-record – mirage

ответ

0

позволяет сказать, что у вас есть три поля на user_jobs:

статуса, user_id и job_id

Предполагая, что ваши таблицы user_jobs имеет один статус поля, которое определяет присвоено или неназначенные статус = 1 => Unassigned статуса = 0 => присвоенные

Шаг 1: Создание одного метода в JobsController.php

function userjobs($jobId, $userId, $assign = 1){ 
     # $assign is 1 means true and 0 means unassigned 

     # if you want to assign a job to user 
     $data['UserJob']['user_id'] = $userId; 
     $data['UserJob']['job_id'] = $jobId; 
     App::import('model','UserJob'); 
     $UserJob = new UserJob(); 


     if($assign == 1){ 
     $UserJob->save($data); 
     }else{ 
     $UserJob->updateAll(
        array('UserJob.status'=>1), 
        array('UserJob.user_id'=>$userId,'UserJob.job_id'=>$jobId)); 
     } 

    } 

Шаг 2: вызовите этот метод на ajax.

Это будет делать желаемая вещь.

Смежные вопросы