2017-05-31 127 views
0

我開發在Laravel 5.4的項目。我想在我的模型中編寫一個select,insert和update查詢,該查詢應該適用於數據庫中的任何表。我曾經這樣做是Codeigniter,並且在那裏工作得很好,但我不知道如何在Laravel中使用它。Laravel查詢寫

以下是從模型文件笨

class General_Model extends CI_Model { 

     public function fetch_CoustomQuery($sql){ 
     $query = $this->db->query($sql); 
     return $query->result(); 

     } 


     public function create_record($data, $tbl) 
     { 
     $this->db->set($data); 
     $this->db->insert($tbl); 
     return ($this->db->affected_rows() != 1) ? FALSE : TRUE; 
     } 



     public function update_record($data, $tbl, $wher) 
     { 
     $this->db->where($wher); 
     $this->db->set($data); 
     $this->db->update($tbl); 
     } 


     public function delete_record($tbl, $wher) 
     { 
     $this->db->where($wher); 
     $this->db->delete($tbl);   
     } 
} 

它的代碼是笨非常容易。我只需要傳遞參數,工作正常。我想在我的Laravel模型中編寫相同的查詢。請幫助

+0

在Laravel,這通常會在控制器,而不是模型去。看看[Laravel的查詢生成器](https://laravel.com/docs/5.4/queries)。 –

+0

「我想要寫在我的模型中選擇,插入和更新查詢應該在數據庫中的任何工作表中。」不,你沒有。您希望使用內置功能,而不是在現有的深思熟慮的ORM之上創建額外的奇怪ORM。 – ceejayoz

+0

此外,我強烈建議訂閱Laracasts。具體來說,[這裏是基於查詢生成器截屏(https://laracasts.com/series/laravel-from-scratch-2017/episodes/8?autoplay=true) - (鏈接更新) –

回答

3

我會強烈推薦閱讀documentation但方法簡單:

GeneralModel::create(["num" => 1, "name" => 2]); 
GeneralModel::where("num", ">", 2)->update(["num" => 1]); 
GeneralModel::where("num", ">", 2)->delete(); 

沒有必要把在模型上這些方法。

1

如果你真的想類似的東西,那麼你可以有功能有一個接受模型作爲參數:

public function create_record($model,$data) 
{ 
    $model::create($data); 
} 

其中的控制器,你可以這樣做

$model = App\Fruit; // lets say fruit is a model you have 
GeneralModel::create_record($model,$data); 

,但爲什麼不乾脆直接與它一樣:

$var = App\Fruit::create($data); 

這是多餘的..對於每個模型有aw AY獲取,插入,更新或從他們的角度表中刪除記錄。我建議你閱讀更多關於文檔Laravel Eloquent