А имеет много контроллеров, где я должен сохранять/создавать новые модели, это выглядит следующим образом:Слишком много параметров для создания модели в контроллере?
public Controller_Test extends Controller_Template {
if ($post = $this->request->post()) {
$model = ORM::factory('model');
$model->param1 = $post['Param1'];
$model->param2 = $post['Param26'];
$model->param3 = $post['Param31'];
$model->param4 = $post['Param13'];
$model->param5 = $post['Param2'];
$model->param6 = $post['Param35'];
$model->param7 = $post['Param10'];
$model->param8 = $post['Param22'];
$model->param9 = $post['Param3'];
$model->save();
}
}
Можно ли объединить (создать метод) Thats сохранит весь массив?
Я знаю о $model->values($post)->create();
, но до сих пор не могу понять, как на самом деле он работает, так как вы можете видеть, что у меня есть разные ключи опубликованных параметров, и это можно было бы рассмотреть.
Во многих примерах все назначения данных выполняются в контроллере, но они очень маленькие, в моем случае я предполагаю, что у вас есть огромные контроллеры с множеством строк назначения данных, и это будет плохое кодирование стиля Я думаю.
Если вы можете сопоставить почтовые ключи с полями, вы можете сделать это меньше кода, но это не лишено каких-либо рисков. Если вы его автоматизируете, вы должны быть осторожны при модификации защищенных полей. – datasage
Таким образом, я могу выбрать метод, например 'Create_Model', с параметрами опубликованного массива или оставить его как есть (хотя мне это не нравится). – Smash
Глядя на [API] (http://kohanaframework.org/3.0/guide/api/Model#__construct), похоже, они действительно оставляют это по вашему усмотрению. Вы можете использовать магические методы PHP и написать общие геттеры/сеттеры и добавить метод «populate()» к вашей базовой модели, имея все остальные модели. Использование '__call' может дать вам немного большую гибкость, когда дело доходит до отображения результатов поля для моделирования свойств. – ficuscr