Как разрешить родственную модель в Yii быть пустой - PullRequest
0 голосов
/ 17 декабря 2011

В моем приложении Yii у меня довольно простая настройка модели. Я использовал автоматически сгенерированный код gii для создания базового CRUD, пока я получаю данные для своего приложения.

Итак, у меня есть Авторы и Книги. Книга принадлежит_ Автору.

У меня есть огромный список книг, которые уже нужно вводить - но поскольку я еще не вошел в число авторов - ни одна из моих книг не сохранит, так как я получаю «Пытаться получить свойство необъекта», когда сохраняю без Выбор автора - несмотря на то, что он не является обязательным.

Поскольку у меня нет списка книг, упорядоченного по авторам (это прямой список названий в списке CSV), это мешает мне сохранять любые книги.

Как сделать автора необязательным?

Ответы [ 3 ]

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

вы могли бы сначала импортировать ваших авторов, но это, вероятно, не сработало бы, так как в вашем csv не было бы author_id

на вашем месте я бы удалил внешний ключ (не поле author_id, просто fk) и импортировал мои книги, затем добавил авторов, а когда закончил, снова добавил внешний ключ для обеспечения целостности данных и использования его в будущем

Yii не будет жаловаться, если вы сделаете это

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

Так что ответ был более простым, чем я предполагал - у меня были неправильные отношения.Вместо «принадлежит» мне нужен «есть один».Имеет одно отношение допускает пустые значения.

0 голосов
/ 18 декабря 2011

В функции «правил» модели «Книга» вы должны увидеть что-то вроде этого:

array('...','...','author', 'required'),

Все, что вам нужно сделать, это удалить свойство 'author' из массива, так что оно больше не потребуется. Конечно, это будет работать только в том случае, если столбец «автор» в таблице «Книга» БД помечен как необязательный.

Я надеюсь, что это поможет вам, но я боюсь, что это не решит вашу проблему. Получаемое сообщение об ошибке «Попытка получить свойство необъекта» говорит о том, что у вас есть другая проблема, а не неустановленное обязательное свойство в отправленной форме. Если это так, вы можете опубликовать функцию BooksController «создать» и связанное представление «_form», чтобы определить, что происходит не так.

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