Cakephp SQL Ошибка: 1064: - PullRequest
       1

Cakephp SQL Ошибка: 1064:

1 голос
/ 22 сентября 2011

Создайте вызов find для таблицы с именем Attachment, которая связана с другой таблицей с именем AddOn.Я получаю ошибку sql.Кажется, он ищет поле с именем display_field, но его нет в таблице.Почему это ищет, я не знаю.

$previous = $this->AddOn->Attachment->find('first', array('conditions'=> array('model'=>'AddOn', 'foreign_key'=>$id)));

Ошибка:

SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'display' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 684]

Query: display

Array
(
    [Attachment] => Array
        (
            [id] => 44
            [model] => AddOn
            [foreign_key] => 41
            [dirname] => img
            [basename] => fontgame_620x432.png
            [checksum] => 0488620c807cfaebb17489cb9c33f4fe
            [alternative] => Fontgame-620x432
            [group] => attachment
            [created] => 2011-09-22 14:04:35
            [modified] => 2011-09-22 14:04:35
            [file] => /home/t553788/public_html/res360/res/app/webroot/Media/transfer/img/fontgame_620x432.png
            [ratio] => 1.43518518519
            [known_ratio] => √2:1
            [megapixel] => 0
            [quality] => 1
            [width] => 620
            [height] => 432
            [bits] => 8
            [size] => 176726
            [mime_type] => image/png
        )

    [AddOn] => Array
        (
            [id] => 41
            [add_on_category_id] => 6
            [title] => new addon
            [description] => qwedwed
            [enabled] => 0
            [list_no] => 0
            [availability] => 1
            [price_quote_as] => 0
            [price] => 10.00
            [valid_from] => 2011-09-01
            [valid_to] => 2011-09-02
            [created] => 2011-09-20 18:22:51
            [updated] => 2011-09-22 16:29:38
            [deleted] => 0
            [display_field] => *missing*
        )

)

Модель навесного оборудования:

        <?php
        class Attachment extends AppModel {

            var $name = 'Attachment';

            var $actsAs = array('Containable');

        }
        ?>

АддонМодель;

            <?php
            class AddOn extends AppModel {

                var $name = 'AddOn';

                var $actsAs = array('Containable');

                var $belongsTo = array(

                    'AddOnCategory' => array('className' => 'AddOnCategory')

                );

                var $hasMany = array(

                    'AddOnPurchase' => array('className' => 'AddOnPurchase'),
                    'AddOnRateroom' => array('className' => 'AddOnRateroom'),

                    'Attachment' => array(
                          'className' => 'Media.Attachment',
                          'foreignKey' => 'foreign_key',
                          'conditions' => array('Attachment.model' => 'AddOn'),
                          'dependent' => true
                          )
                );

                /*
                var $validate = array(
                    'file' => array('mimeType' => array('rule' => array('checkMimeType', false, array( 'image/jpeg', 'image/png'))))
                );*/

                // before find  
                function beforeFind($queryData){

                    if(!isset($queryData['conditions']['AddOn.deleted'])){
                        $queryData['conditions']['AddOn.deleted'] = 0;
                    } 

                    return $queryData;

                }


            }
            ?>

1 Ответ

4 голосов
/ 22 сентября 2011

SQL-запрос выполняется: display

Как вы знаете, SQL-запрос, который вы ищете, должен начинаться так: SELECT <something> FROM ...

Это явно не так, и именно это MySQL пытается вам сказать.

Убедитесь, что вы не вызываете метод с именем display() из какого-либо кода:

$this->display(); // in models or behaviors
$this->Attachment->display(); // in controller, etc

CakePHP имеет тенденцию делать это, когда вы вызываете отсутствующий метод в модели.

Обычный преступник думает, что вы включили поведение, установив свойство модели $actAs, когда правильное свойство фактически называется $actsAs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...