2016-04-02 66 views
-1

在過去,我已經與框架擔任SlimCodeIgniter,都提供了方法,如getWhere(),這個方法返回truefalse如果傳遞給getWhere陣列含量在數據庫表中找到。 擴展PDO的功能其實我已經創建了自己的層類,我的目標是創建一個照顧尋找基於所提供的參數特定數據庫內容的方法,目前我創造了這個:使用PDO創建查找方法?

public function findRecordById($table, $where = null, $param = null) 
{ 
    $results = $this->select("SELECT * FROM $table WHERE $where",$param); 
    if(count($results) == 0) 
    { 
     return false; 
    } 
    return true; 
} 

爲搜索內容我簡單地做:

if(!$this->db->findRecordById("table_name", "code = :key AND param2 = :code", 
      array("key" => $arr['key'], "code" => $arr['code']))){ 
    echo "content not found"; 
} 

現在所有工作得很好,但我認爲在條件的通話是有點「過長和不切實際的,我想,以優化一切可能去的所有內容到數組或其他東西,但直到現在我有一個確切的想法。一些幫助?

+0

我不太明白你的問題。 –

+0

@YourCommonSense嗯,我不知道你不明白,但只是我想優化我的方法'findRecordById',現在我必須通過表名(我需要找到記錄),where子句和參數作爲數組。我想優化所有,並通過一個數組或其他東西這樣的地方和paremeters。 – Dillinger

回答

0

我不太瞭解你的問題,但是對於提供的代碼,我可以告訴我這樣的方法不應該屬於數據庫封裝器,而應該屬於CRUD類,這是一個完全不同的故事。

如果你想用這樣的方法,它應該是一個模式類的方法,並用這樣的

$article = Article::find($id); 

雖然數據庫包裝I would strongly suggest you to keep with raw SQL

$sql = "SELECT * FROM table_name WHERE code = :key AND param2 = :code"; 
$data = $this->db->query($sql, $arr)->fetchAll(); 

是任何人都可以閱讀和理解的乾淨,整潔和易讀的代碼。

作爲獎勵,您將能夠使用ODER BY運算符來訂購查詢結果。

+0

其他API的有趣的文章,但我不明白你的代碼示例代碼可以優化我的'find'方法。 – Dillinger

+0

它解釋了在數據庫封裝器中應該沒有find方法 –

+0

因此,你建議爲每個模型創建一個「存在」方法? – Dillinger