Используйте представление базы данных для модели в CakePHP 2.0 - PullRequest
0 голосов
/ 27 января 2012

После обновления с Cake 1.3 до 2.0 I я получаю пропущенные ошибки таблиц для всех моих моделей, которые используют базу данных представления , а не таблицы.Мои модели, использующие таблицы, по-прежнему работают нормально.Изменение этих моделей для использования таблиц решает проблему, но мне нужны представления.

В прошлом это работало, так как этот вопрос показывает ;Представления работали так же, как таблицы.Однако после перехода на Cake 2.0 я получаю:

Ошибка: таблица базы данных myView для модели myModel не найдена

Вот пример класса модели:

class Hauler extends AppModel
{
    var $useTable = 'hauler_view';
    var $primaryKey = 'id';
    var $useDbConfig = 'default';
}

Представление hauler_view существует и работает в приложении в версии 1.3.Копирование тех же данных из представления в физическую таблицу будет работать, если я настрою модель для чтения этой физической таблицы.

Я подтвердил, что могу получить доступ к представлениям базы данных с помощью необработанных функций Cake SQL, поэтому я могу получить доступ к этим представлениям, просто Модели не видят "таблицы".

Я использую SQL Server 2005 с драйвером sqlsrv, если это имеет значение.На моем сервере установлен собственный клиент SQL Server 2008, который позволяет этой версии торта обращаться к SQL Server.

Есть ли какой-то способ, позволяющий моделям в CakePHP 2.0 использовать представления, а не таблицы?

Я решил эту связанную проблему , поэтому теперь я знаю, что мой драйвер базы данных работает нормально и не является проблемой.

Ответы [ 3 ]

1 голос
/ 27 января 2012

Существует несколько способов решения этой проблемы.

1- Попробуйте исправить ошибку , чтобы устранить проблему: 2- Убедитесь, что имя файла модели названо правильно: app/Model/Hauler.php [обратите внимание на чувствительность к регистру файлов и пути] 3- Убедитесь, что файл AppModel.php существует в каталоге Model. Это, вероятно, проблема. Обратите внимание, что написано в книге:

app / app_controller.php, app / app_model.php, app / app_helper.php теперь находится и называется как app / Controller / AppController.php, app / Model / AppModel.php и app / Helper / AppHelper.php соответственно.

И верхняя часть AppModel.php должна содержать предложение использования:

<?php
App::uses('Model', 'Model');
class AppModel extends Model {

}
?>

Об изменениях в AppModel.php можно прочитать также в книге .

1 голос
/ 02 февраля 2012

Это Open Bug в ветке Cake PHP 2.0, ошибка затрагивает только SQL Server и не позволяет моделям использовать представления SQL Server. Это планируется исправить в выпуске Cake 2.0.6.

0 голосов
/ 27 января 2012

Попробуйте добавить этот код перед открытием класса:

App::uses('AppModel', 'Model');

Ваш код кажется правильным

...