检查数据库中是否存在id,如果没有重定向到我的add cakephp

时间:2014-02-13 22:28:10

标签: php cakephp

谢谢,看到我有这个问题,我想检查我的(我的用户)的id是否存在于另一个表中,如果这不存在重定向到我的添加。

  

表1

|用户|

| id |

|用户名|

|密码|

|创作|

|类型|

  

表2

| user_azucar |

| id |

| id_user |

|不能|

| medaza |

| cachaza |

我不想使用hasone,因为不是这种情况。

我想比较id == id_user存在一个会话。 控制器

class IngeniosController extends AppController
{
    public function add()
    {

    }
    public function index()
    {
        $this->loadModel('Ingenio');
        $conditions = array(
            'conditions' => array(
                'UserAzucar.id_user' => $this->Session->read('User.id')
            )
        );
        $result = $this->User->find('first', $conditions);
        if (isset($result['User'])){
           $this->redirect(array('action' => 'add'));
        }
    }
    public function delete()
    {

    }
}

模型

<?php
/**
* 
*/
class Ingenio extends AppModel
{
    public $name = 'UserAzucar';
    public $useTable = 'usuarios_azucar';
    public $primaryKey = 'id_azucarusuario';

}
?>

3 个答案:

答案 0 :(得分:1)

只需使用以下代码替换控制器

class IngeniosController extends AppController { 
public function add()
{

}
public function index(){
    $this->loadModel('User');
$result_count = $this->User->find('count', array(
    'joins' => array(
        array(
        'table' => 'user_azucar',
        'alias' => 'UserAzucar',
        'type' => 'RIGHT',
        'conditions' => array(
            'UserAzucar.id_user = User.id'
        )
        )
    ),
    'conditions' => array(
        'UserAzucar.id_user' => $this->Session->read('User.id')
    )
    ));
    if(!$result_count){
    $this->redirect(array('action' => 'add'));
    }
}
public function delete()
{

}

}

答案 1 :(得分:0)

table2是user_azucar还是usuarios_azucar

为什么模型名称与$name属性不同?

您对姓名使用了奇怪的约定(为什么不遵循蛋糕惯例?)

但如果我了解您的架构,那么您必须这样做:

$conditions = array(
    'conditions' => array(
        'id_user' => $this->Session->read('User.id')
     )
);

$result = $this->Ingenio->find('first', $conditions);

if (empty($result)){
    $this->redirect(array('action' => 'add'));
}

答案 2 :(得分:0)

  1. 检查SESSION是否已加载到AppController中以及控制器顶部(这种情况下,确保SESSION不为空)。
  2. 在appController和IngeniosController

    中执行此操作
    public $components = array('Session','RequestHandler');
    
    1. 调试您的SESSION以确定它是否为空

      var_dump($this->Session->read('User.id'));    
      
    2. 您的控制器:

      public function index()
      {
          $this->loadModel('UserAzucar');
          $conditions = array(
              'conditions' => array(
                  'id_user' => $this->Session->read('User.id')
              )
          );
          $this->UserAzucar->recursive = -1;
          $result = $this->UserAzucar->find('first', $conditions);
          if (empty($result)){
              return $this->redirect(array('action' => 'add'));
          }
      }