Могу ли я передать аргументы в функцию модели? - PullRequest
1 голос
/ 25 октября 2010

Можно ли вообще сделать что-то подобное в codeigniter? Это вообще считается хорошей практикой?

Ответы [ 2 ]

2 голосов
/ 25 октября 2010

Да, это возможно.

Я делаю это все время, если данные не из поста, я могу отправить их модели.

$this->load->model('some_model');
$this->some_model->some_function($var);

Какие данные вы хотите отправить в модель? Это поможет решить, является ли это плохой практикой.

1 голос
/ 25 октября 2010

Конечно это возможно!Как показал Киран, вы можете просто написать функции в своем классе модели, которые принимают параметры.

Просто имейте в виду, что ваш контроллер должен сначала проанализировать / проверить эти параметры, дополнительная проверка не должна быть включена в вашу модель.Ваша модель должна строго использоваться для записи и чтения из БД.

Таким образом, в качестве хорошей практики вы должны передавать только те аргументы, которые содержат фактические данные для хранения или использования в ваших запросах.

Я обычно пишу разные функции для разных случаев ГДЕ.Например:

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());
}
...