А вообще BELONGS_TO это тоже самое что HAS_MANY только верх ногами. т.е. например если б вы делали что одному юзеру принадлежат много комментариев - то это HAS_MANY. А вот если вы скажите что многим комментариями принадлежит один пользователь - тогда это BELONGS_TO.
Обижаете конечно я читал.
А про направление я в принципе догадался… вот только один момент
когда Вы говорите что многим комментариям принадлежит один паользователь и ставите BELONGS_TO,
вы делаете это описывая модель комментариев ? или пользователей ?
к примеру если мне надо сделать связь много_комментариев к одному пользователю. т.е. что б при find-е какого-то комментария у меня также вытаскивалась информация о его авторе. (BELONGS_TO в моделе Comments)
а вот если мне надо связать одного пользователя со многими комментаряими т.е. что б когда я достаю юзера - получал также список его комментов - тогда дела Has_Many в моделе Users.
к примеру если мне надо сделать связь много_комментариев к одному пользователю. т.е. что б при find-е какого-то комментария у меня также вытаскивалась информация о его авторе. (BELONGS_TO в моделе Comments)
а вот если мне надо связать одного пользователя со многими комментаряими т.е. что б когда я достаю юзера - получал также список его комментов - тогда дела Has_Many в моделе Users.
ну т.е. BELONGS_TO можно трактовать как мноко-к-одному, а HAS_MANY один_ко_многим… все ясно спасибо!
дело в том что попытка удалить то что нельзя удалить вызовет исключение и ошибку уровня базы данных… Есть ли в Yii метод позволяющий проверить может ли данная запись быть удалена ? в смысле не поптка ли это нарушить целостностьб базы данных … вот о чеи я.
Я понимаю что необходимо заложить в логику программы удаление зависямых аписей а уже только после этого удаление самой записи, но дело в том что
от этой записи может зависить ооочень много других записей и таблиц (да и не понятно как узнать об этом). Просто скажем у меня порядка двух сотен таблиц и в большинстве из них данные имеют связь с этой записью (которую мы хотим удалить), не понятно как это определить да и зачем это делать если это делает БД ?
хочется получить некую "красивую" ошибку, точнее сообщение о ней, а не эксепшн…
Булу рад любому совету.
Спасибо.
В логику программы можно и не закладывать удаление зависимых записей, а использовать возможности MySQL и его InnoDb как следует.
Что касается невозможности удаления какой то записи, ввиду того, что CONSTAIN на неё настроен как DELETE - RESTRICT, то это Yii об этом не знает и знать не должен. В любом случае необходимо предварительно проверить может ли запись быть корректно удалена и что за этим последует. Это уже бизнес логика. Допустим есть пользователь и 1000 объявлений. Админ хочет удалить этого пользователя, ему выводится список последствий, что удалятся все материалы пользователя из системы. Так вот и базе и Yii абсолютно по барабану что зависимые записи тоже удалятся, поэтому и бизнес логика. DELETE - RESTRICT опять же как дополнительная защита разработчика от своих же ошибок. Тут все точно также как в случае с UNIQUE - дополнительный валидатор на возможность удаления той или иной записи.
я понимаю что можно на действие удаления в валидаторе на требуемое поле повесить свой обработчик, но я имеб ввиду есть ли во фреймворке средства для определения, можно ли удалить запись ? или необходимо такую функцию самом разработать ? и если самому, то какой способ наиболее оптимальный…
Я в принципе понимаю что можно селектом "пощупать" на наличии зависимых полей, но правильный ли это выход ?