Ошибка с CakePHP, возвращающим таблицу, отличную от указанной - PullRequest
0 голосов
/ 05 сентября 2011

Итак, я пытаюсь получить таблицу поиска в своем представлении элементов, и я делаю это с помощью вспомогательной функции в моем контроллере тегов.

<?php
class TagsController extends AppController {

    var $name = 'Tags';

    function gettags(){
        if (!empty($this->params['requested'])) {
            return $this->Tag->find('list', array('fields'=>'Tag.tag_name'));
        }
        return false;
    }
}

А потом, на мой взгляд, я звоню

<? $tags = $this->requestAction('/tags/gettags'); debug($tags); ?>

Тем не менее, он возвращает ошибку

Предупреждение (512): Ошибка SQL: 1054: неизвестный столбец «Tag.tag_name» в «списке полей» [CORE / cake / libs / model / datasources / dbo_source.php, строка 684] Запрос: SELECT Tag. id, Tag. tag_name ОТ users AS Tag ГДЕ 1 = 1

, что означает, что моя таблица тегов на самом деле является пользователями. Это не происходит в представлении Теги. У кого-нибудь есть идеи относительно того, что я делаю неправильно? Таблицы не связаны ни с другими, ни с чем-либо.

Модель моего тега:

  <?php
class Tag extends AppModel {
    var $name = 'Tag';

    var $hasMany = array(
        'BrandTag' => array(
            'className' => 'BrandTag',
            'foreignKey' => 'tag_id',
            'dependent' => true,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'exclusive' => '',
            'finderQuery' => '',
            'counterQuery' => ''
        ));

    }
?>

Ответы [ 2 ]

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

Примерно так должно работать:

$this->getModel('Tag')->find('list', array('fields'=>'Tag.tag_name');

Как уже говорилось, вы не должны извлекать данные из такого вида, это не очень хорошая практика MVC.

Если код тега будет получен несколькими контроллерами, вам следует рассмотреть возможность создания компонента, который эти контроллеры могут загружать по мере необходимости.

0 голосов
/ 06 сентября 2011

Да, возможно, стоит зайти в папку app / tmp / cache и удалить файлы из папки модели. Возможно, вы кэшировали испорченную модель.

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