【问题标题】:Laravel query writingLaravel 查询编写
【发布时间】:2017-06-01 11:03:28
【问题描述】:

我正在使用 Laravel 5.4 开发一个项目。我想在我的模型中编写一个选择、插入和更新查询,该查询应该适用于数据库中的任何表。我曾经这样做是 Codeigniter 并且在那里工作正常,但我不知道如何在 Laravel 中使用它。

以下是 Codeigniter 中模型文件的代码

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

在 Codeigniter 中非常简单。我只需要传递参数并且工作正常。我想在 Laravel 的模型中编写相同的查询。请帮忙

【问题讨论】:

  • 在 Laravel 中,这通常会进入控制器,而不是模型。看看Laravel's Query Builder
  • “我想在我的模型中编写一个选择、插入和更新查询,它应该适用于数据库中的任何表。”不,你没有。您希望使用内置功能,而不是在现有的、经过深思熟虑的 ORM 之上创建额外的奇怪 ORM。
  • 另外,我强烈建议订阅 Laracasts。具体来说,here is a screencast based on the query builder - (链接已更新)

标签: php sql laravel laravel-5


【解决方案1】:

我会强烈推荐阅读documentation,但方法很简单:

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

无需将这些方法放在模型上。

【讨论】:

    【解决方案2】:

    如果你真的想要这样的东西,那么你可以在那里拥有接受模型作为参数的函数:

    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);
    

    这是多余的 .. 每个模型都有办法从他们的透视表中获取、插入、更新或删除记录 .. 我建议你阅读更多关于 Laravel Eloquent 的文档

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 2020-06-15
      • 1970-01-01
      • 2017-05-25
      • 2013-06-12
      • 2016-04-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多