【问题标题】:Pagination and database error cakephp [duplicate]分页和数据库错误 cakephp [重复]
【发布时间】:2012-09-18 19:19:22
【问题描述】:

可能重复:
CakePHP website crashing after pagination

我有一个工作的页面,但后来决定添加分页功能 - 它在该页面上工作,现在试图将其复制到另一个页面我现在收到 pdo 数据库错误。说变量Relationship.sender_id 不存在。

我有一个 relationship 表,其中包含 - id, sender_id, receiver_id, expiry_date,active

这是函数中的代码

    public function index_admin(){

    //retrieve Account Id of current User       
    $accountid=$this->Auth->user('account_id');

    //Conditions
    $conditions=array(
    "OR"=> array(
        'Relationship.sender_id' => $accountid,
        'Relationship.receiver_id' => $accountid)
    );

    //Find all Relationships where receiver_id = accountid
    $relationships=$this->Relationship->find('all', array(
    'conditions' => $conditions));


    $compName = $this->Account->field('account_name', array('id' => 'Relationship.id'));

    $this->paginate = array(
    'limit' => 10,
    'conditions'=> $conditions);

    $this->set('accountid', $accountid); 
    $this->set('relationship', $this->paginate());  

    $this->set('compName', $compName);  
}

这真的让我很失望,任何帮助将不胜感激。

这是代码创建的 sql 查询

SELECT `Relationship`.`id`, `Relationship`.`sender_id`, `Relationship`.`receiver_id`,
 `Relationship`.`active`, `Relationship`.`requested`, `Relationship`.`expiry_date`, 
`ReceiverAccount`.`id`, `ReceiverAccount`.`street`, `ReceiverAccount`.`city`, 
`ReceiverAccount`.`postcode`, `ReceiverAccount`.`state`, `ReceiverAccount`.`country`,
 `ReceiverAccount`.`active`, `ReceiverAccount`.`account_name`, `ReceiverAccount`.`abn`,
 `SenderAccount`.`id`, `SenderAccount`.`street`, `SenderAccount`.`city`, 
`SenderAccount`.`postcode`, `SenderAccount`.`state`, `SenderAccount`.`country`, 
`SenderAccount`.`active`, `SenderAccount`.`account_name`, `SenderAccount`.`abn` 
FROM 
`pra`.`relationships` AS `Relationship` LEFT JOIN 
`pra`.`accounts` AS `ReceiverAccount` ON (
`Relationship`.`receiver_id` = `ReceiverAccount`.`id`) LEFT JOIN 
`pra`.`accounts` AS `SenderAccount` ON (
`Relationship`.`sender_id` = `SenderAccount`.`id`) WHERE (
(`Relationship`.`sender_id` = 2) OR (`Relationship`.`receiver_id` = 2))

当我在注释掉分页后调试 $relationships 时,我得到以下输出

array(
    (int) 0 => array(
        'Relationship' => array(
            'id' => '5',
            'sender_id' => '3',
            'receiver_id' => '2',
            'active' => false,
            'requested' => false,
            'expiry_date' => '2012-05-09'
        ),
        'ReceiverAccount' => array(
            'id' => '2',
            'street' => '50 Simmington Circuit',
            'city' => 'Greenvale',
            'postcode' => '3059',
            'state' => 'VIC',
            'country' => 'Australia',
            'active' => true,
            'account_name' => 'Kialla Transport (Operations) Pty Ltd',
            'abn' => '2147483647'
        ),
        'SenderAccount' => array(
            'id' => '3',
            'street' => '31 Simmington Circuit',
            'city' => 'Greenvale',
            'postcode' => '3059',
            'state' => 'VIC',
            'country' => 'Australia',
            'active' => true,
            'account_name' => 'MGD Kialla Pty Ltd',
            'abn' => '2147483647'
        )
    ),

【问题讨论】:

  • 什么返回 debug($relationships); ? (评论分页看一下)
  • 这是小组作业的一部分,有可能是重复的

标签: database cakephp


【解决方案1】:

删除行:

$this->paginate = array(
'limit' => 10,
'conditions'=> $conditions);

在关系控制器的顶部添加变量:

public $paginate = array(
  'Relationship' = > array(
    'limit' => 10)
   )
);

然后试试:

$this->set('relationship', $this->paginate('Relationship', $conditions));  

这应该可以解决问题...

【讨论】:

  • 不走运,仍然抛出错误
  • 如果你简单地满足条件,它会起作用吗...比如$conditions=array('Relationship.sender_id' => $accountid);
  • 不,当我将它简化为 sender_id 或 relationship_id 时也会出现同样的错误
  • 我用调试打印输出更新了问题
  • 查看更新的答案并告诉我它是否有效
猜你喜欢
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 2012-08-29
相关资源
最近更新 更多