简体   繁体   中英

Cakephp 2.8.x Query access violation when i try the CakePHP way. Normal query works

I created a query, but now i need to refactor it to the CakePHP standard. Only i can't seem to get it working.

This is my working query:

 $query = $this->Transfer->query( "SELECT DISTINCT emailaddresses.emailaddress
                  FROM transfers 
                  JOIN emailaddresses 
                  ON (emailaddresses.transfer_id = transfers.transfer_id AND emailaddresses.type <> 'SENDER' AND emailaddresses.received_state = 'DELIVERED')
                  WHERE transfers.created_user_id = $created_user_id " );

This query is working, but when i try to Cakeify it i get access denied for table emailaddress. This is the CakePHP query:

                $query = $this->Transfer->find('all', array(
                'fields' => 'DISTINCT Emailaddress.emailaddress ',
                'conditions' => array(
                    'transfers.created_user_id' => $created_user_id
                ),
                'joins' => array(
                    array(
                        'table' => 'Emailaddress.emailaddress',
                        'type' => 'INNER',
                        'conditions' => array(
                                'Emailaddress.transfer_id' => 'Transfer.transfer_id',
                                'Emailaddress.type' => 'SENDER',
                                'Emailaddress.received_state' => 'DELIVERED'

                        )
                    )
                )
            ));

What do i need to change to get this query working with the Cake standards?

Your query would be like:

$query = $this->Transfer->find('all', array(
    //'fields' => 'DISTINCT Emailaddress.emailaddress ',
    'fields' => array('DISTINCT Emailaddress.emailaddress '),
    'conditions' => array(
        //'transfers.created_user_id' => $created_user_id
        'Transfer.created_user_id' => $created_user_id
    ),
    'joins' => array(
        array(
            //'table' => 'Emailaddress.emailaddress',
            'table' => 'emailaddresses',
            'alias' => 'Emailaddress', // add alias
            'type' => 'INNER',
            'conditions' => array(
                    'Emailaddress.transfer_id' => 'Transfer.transfer_id',
                    //'Emailaddress.type' => 'SENDER',
                    'Emailaddress.type <>' => 'SENDER',
                    'Emailaddress.received_state' => 'DELIVERED'

            )
        )
    )
));

Read more:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM