2016-02-13 6 views
0

Я использую DBIx :: класс модели следующие:DBIx :: Class Найти или создать объекты

Recipe со многими Tags. Tag совместно с другими объектами Recipe.

При создании объекта Recipe я хочу создать набор объектов Tag и связать их с вновь созданным объектом Recipe. (Пользователь вводит список тегов, и у меня есть только имя тега, который нужно использовать)

Для тегов я мог перебирать список и находить тот, который соответствует введенному пользователю имени или создает новый объект вручную.

Не удалось найти зарегистрированный метод типа findOrCreate в DBIx :: Class. Какие-либо предложения ?

ответ

1

Если у вас есть ключ от имени, вы можете использовать find_or_create.

+0

Спасибо, видимо, я не могу правильно прочитать документацию. –

+0

Откуда вы узнали, был ли объект «найден» или «создан»? $ obj = $ schema-> resultset ('ObjList') -> find_or_create ({... некоторые условия ...}); – rajeev

+0

Прочтите документацию. Вот что он говорит: если вам нужно знать, была ли найденная строка найденной или новая создана, используйте вместо этого «find_or_new» и «in_storage» в DBIx :: Class :: Row. Не забудьте вызвать «insert» в DBIx :: Class :: Row, чтобы сохранить только что созданную строку в базе данных! – bolav