Kohana 3.2 создание модели для таблицы с подчеркиванием в ее названии
У меня возникли проблемы при создании модели для таблицы с именем product_details, и после поиска иногда я нашел этот ответ
Kohana 3.2: вызов модели с подчеркиванием в имени
Согласно ответу, я прибег к следующему подходу. Я создал Model_Product_Details, затем я объявил protected $_table_name = 'product_details';
а затем сохранил его в приложении / classes / models / product_detail.php
И я назвал это в контроллере с этим кодом:
$product_details = ORM::factory(product_detail);
Но, черт возьми, это не сработало. возвращенная ошибка была ErrorException [ Fatal Error ]: Class 'Model_Product_detail' not found
Я попытался переименовать таблицу, модель и имя файла, удалив подчеркивание, и это сработало. Но дело в том, что база данных, которую я использую, принадлежит устаревшей системе, поэтому я не могу изменить ее имя. Я надеюсь, мог бы помочь мне немедленно.
3 ответа
Проанализировав ответ по ссылке, которую я предоставил в третий раз (я думаю), ссылаясь на использованный мной подход, я просто должен удалить подчеркивание только из имени файла и названия модели.
Так вот как это исправить. Допустим, у вас есть таблица с именем product_details. Вы должны создать Model_ProductDetail, а затем изнутри объявить защищенный $_table_name = 'product_details'; затем сохраните его как productDetail.php
Проблема, которую вы описываете, заключается не в отсутствующей или ошибочной таблице, а в имени объекта. Когда в имени модели используются подчеркивания, после части Model_ каждое подчеркивание рассматривается как папка. Для класса с именем Model_Product_Details Коана ожидает, что файл details.php будет находиться в папке models/product/details.php.
protected $_table_name = 'product_details';
должен указывать на таблицу на правильном пути
В этом случае вам нужно переименовать вашу модель в productDetails
, Kohana ищет эту модель в model/product
подкаталог. Смотрите это здесь: ссылка.
"Имена классов CamelCased должны использоваться, когда нежелательно создавать новый уровень каталога".