Могу ли я передать аргументы в функцию модели?
Можно ли вообще сделать что-то подобное в codeigniter? Это вообще считается хорошей практикой?
2 ответа
Да, это возможно.
Я делаю это все время, если данные не из почты, я могу отправить их в модель.
$this->load->model('some_model');
$this->some_model->some_function($var);
Какие данные вы хотите отправить в модель? Это поможет решить, является ли это плохой практикой.
Конечно, это возможно! Как показал Киран, вы можете просто написать функции в своем классе модели, которые принимают параметры.
Просто имейте в виду, что ваш контроллер должен сначала проанализировать / проверить эти параметры, никакая дополнительная проверка не должна быть включена в вашу модель. Ваша модель должна строго использоваться для записи и чтения из БД.
Поэтому в качестве хорошей практики вы должны передавать только те аргументы, которые содержат фактические данные, которые будут храниться или использоваться в ваших запросах.
Я обычно пишу разные функции для разных случаев ГДЕ. Например:
select($id){}
select_by_name($name){}
...
Это делает вашу модель понятной. Единственное исключение, которое я делаю, - это ограничение вашего результата. Во всех моих моделях у меня есть функция для выбора всех записей с возможностью передачи еще двух переменных для целей нумерации страниц:
select_all($start=null,$limit=null){
$qry = "SELECT * FROM ...";
if($start != null) $qry .= " LIMIT ?,?";
return $this->db->query($qry,func_get_args());
}