Могу ли я передать аргументы в функцию модели?

Можно ли вообще сделать что-то подобное в 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());
}
Другие вопросы по тегам