【问题标题】:CakePHP relational modelsCakePHP 关系模型
【发布时间】:2014-01-15 23:29:36
【问题描述】:

基本上我有 3 个表 users 、 jobs 和 users_jobs。

users_jobs 是 id,job_id,user_id,主要用于跟踪用户分配的作业。

可以通过在 users_jobs 表中添加/删除条目来分配。取消分配。

就 cakephp 而言,我正在努力理解如何建模。 所以我有一个具有属性的 Job 模型

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 中,我有 unassign 函数,该函数旨在取消分配用户的工作。如何修改 users_jobs 表来删除关系而不删除用户或作业?

【问题讨论】:

标签: cakephp model relation


【解决方案1】:

假设您在 user_jobs 上有三个字段:

状态、user_id 和 job_id

假设您的表 user_jobs 有一个字段状态,定义为已分配或未分配 状态=1 => 未分配 status=0 => 已分配

第一步:在 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 上调用此方法。

它会做想要的事情。

【讨论】:

    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多