Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2014, 16:28   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию Kohana ORM: имена полей для внешнего ключа

Дорогие специалисты, скажите пожалуйста, при создании связей в ORM и использовании $has_many и $belongs_to важно, чтобы в таблице в самой базе данных поле внешнего ключа указывалось с постфиксом _id (например, не department, а именно department_id)?

У меня сделана на основании данных из базы такая связь для таблиц tDepartment и tPersonal (я приведу только самые проблемные поля: в таблице Personal есть поле внешнего ключа department, которое хранит в себе ид департамента - связь по полю с первичным ключом Department.id_department).

Модель Personal
Код:
class Model_Personal  extends ORM {

protected $_table_name = 'tPersonal';
 protected $_primary_key = 'id_personal'; 

$protected $_belongs_to = array(
'department' => array(
'model' => 'department',
'foreign_key' => 'id_department',
),
);
}
С другой стороны ключа таблица tDepartment
Модель Department
Код:
class Model_Department extends ORM {
     protected $_table_name = 'tDepartment'; 
     protected $_primary_key = 'id_department'; 
     
    
     protected $_has_many = array(
        'person' => array(
        'model' => 'personal',
        'foreign_key' => 'department', //(а не department_id)
            ),
        );
У меня почему-то такой ключ не работает, среда пишет, что она не может найти колонку id_department (сторону ключа $_belongs_to).

Я приложила картинку с ошибкой Коханы. Это происходит при вызове: допустим, я выводя список персонала, хочу указать название отдела. И я, проходя по массиву персонала, указываю имя человека (поле name) и название отдела, где он работает:
Код:
 <?php foreach ($personal as $p) : ?>
 <p><?php echo $p->name; ?></p>
                            <p><?php echo 'Department '.$p->department->department_name; ?></p>
<?php endforeach; ?>
Это ошибка происходит из-за неверных с точки зрения Коханы
названий полей? Если да - как можно в коде (возможно в модели, возможно используя еще одно поле protected или alias_name) сделать так, чтобы не пришлось переименовывать поле в самой базе? У меня там уже и данные и ключи и все на свете стоих, и если я переименую поле в самой таблице, за этим такая канитель потянется.....
Изображения
Тип файла: jpg pic1.jpg (16.6 Кб, 117 просмотров)
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 30.05.2014 в 16:36.
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Kohana ORM: получение id последней записи Blondy PHP 9 20.05.2014 22:46
Kohana 3 ORM: почему контроллер не видит checkbox с формы? Blondy PHP 5 15.05.2014 22:32
Добавление внешнего ключа Ericnex БД в Delphi 6 02.05.2012 23:42
ORM валидация в Kohana Anoobis PHP 2 10.06.2011 15:12
проблема с определением внешнего ключа! veter_s_morya SQL, базы данных 1 26.06.2008 18:37