2010-10-25 131 views

回答

2

是的,這是可能的。

我一直這樣做,如果數據不是來自後我可以發送到模型。

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

你想發送什麼樣的數據給模型?這將有助於決定這是否是不好的做法。

1

當然這是可能的!就像Kieran所說的,你可以在接受參數的模型類中編寫函數。

請記住,您的控制器應首先解析/驗證這些參數,您的模型中不應包含額外的驗證。您的模型應嚴格用於寫入和讀取數據庫。

因此,作爲一種良好的做法,您應該只傳遞包含實際數據的參數,以便在您的查詢中存儲或使用。

我通常爲不同的WHERE情況編寫不同的函數。例如:

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

這是值得商榷的模型是否應該也有輸入驗證或沒有,所以不要」不要把它當作事實。一個堅實的分層架構在各個層面都有驗證。由於不能直接在CI之外調用Model方法,因此儘管對查詢的輸入檢查仍然適用,但仍可以在Model中不重複驗證。 – Ferdy 2010-11-02 10:18:20

相關問題