我需要一个密码建议。
基本上,我正在开发一个系统,它需要数据库中的大量连接和关系。目前在Laravel中,我在应用程序中使用查询生成器进行数据库查询。
目前,我有一个在数据库中查询的示例。
$approved = DB::table('employee_overtimes as eo')
->select('eo.id as id', 'eo.employee_id as eo_employee_id', 'eo.overtime_date', 'eo.time_in', 'eo.time_out', 'eo.approver_id', 'eo.remarks', 'eo.status',
'firstname','lastname','employee.employee_no', 'employee.id as employee_id', 'eo.created_at')
->join('employee' , 'employee.id', '=', 'eo.employee_id')
->where('eo.status', '=', 'Approved')
->orderByDesc('eo.created_at')
->orderBy('lastname', 'ASC')
->get();
有人能建议一种更好的方法来处理这类查询吗?因为它会在我的控制器上重复出现。
发布于 2019-10-15 08:58:19
使用querybuilder而不是雄辩是可以的,因为它更快,有时更有说服力,无法处理复杂的查询。此外,避免使用DB::raw
,因为它容易使用sql注入。请参阅本文https://kursuswebprogramming.com/perbedaan-eloquent-dan-query-builder-laravel/
出于对重复代码的关注,您必须创建自定义函数或库,然后可以根据需要在每个控制器中使用它。
让我给你看一些比较
雄辩的ORM (执行时间: 1.41 s,执行查询: 1000)
<?php
Route::get("test",function(){
for($i=0;$i<1000;$i++){
$t=new Country();
$t->label=$i." Row";
$t->save();
}
});
?>
查询生成器(执行时间: 938 ms,执行查询: 1000)
<?php
Route::get("test",function(){
for($i=0;$i<1000;$i++){
DB::table("countries")->insert(["label"=>$i." Row"]);
}
});
?>
现在,这证明了Query比雄辩快0.5秒。
https://stackoverflow.com/questions/58386757
复制相似问题