首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原始SQL到Eloquent

原始SQL到Eloquent
EN

Stack Overflow用户
提问于 2019-03-14 06:59:52
回答 5查看 240关注 0票数 1

您能否帮助我将此SQL查询转换为Eloquent:

代码语言:javascript
复制
SELECT item.id, hired.item_id, hired.quantity - item.quantity as quanity 
FROM items item 
join hireds hired on hired.item_id = item.id 
WHERE item.quantity > hired.quantity 
order by item.id;
EN

回答 5

Stack Overflow用户

发布于 2019-03-14 15:04:17

您可以使用whereHas()。

代码语言:javascript
复制
   Item::with('hireds')->whereHas('hireds',function($q){
        $q->whereRaw('items.quantity>hireds.quantity');
    })->get();

代码语言:javascript
复制
Item::join('hireds','items.id','=','hireds.item_id')
    ->selectRaw('items.quantity - hireds.quantity as quantity')
    ->whereRaw('items.quantity>hireds.quantity')->get();
票数 1
EN

Stack Overflow用户

发布于 2019-03-14 07:37:30

它可能看起来像这样

代码语言:javascript
复制
DB::table('items')
    ->join('hireds', 'items.id', '=', 'hireds.item_id')
    ->select('item_id', 'quantity')
    ->where('items.quantity', '>', 'hireds.quantity')
    ->get()->sortBy('id');

不是100%确定如何处理冲突的属性名称。

票数 0
EN

Stack Overflow用户

发布于 2019-03-14 12:47:00

您可以在laravel中使用raw创建查询:-

代码语言:javascript
复制
$query = DB::table('work_times as wt')
                ->join('work_time_details as wtd', 'wt.work_time_id','=','wtd.work_time_id')
                ->where('admin_id', $employee_id)
                ->whereBetween('work_time_date', [$start_date, $end_date])
                ->groupBy('wtd.project_id')
                ->orderBy('wtd.project_id')
                ->select(
                    DB::raw('sum(work_time_detail_hrs) as total_hour'),
                    'wtd.work_time_detail_id',
                    'wtd.project_id',
                    'wtd.work_type_id',
                    'work_types.work_type_name',
                    'p.project_name'
                )
                ->get()
                ->toArray();

为此,您需要使用DB类:

代码语言:javascript
复制
use Illuminate\Support\Facades\DB;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55152420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档