将此查询转换为雄辩 [英] Convert this query for eloquent

查看:131
本文介绍了将此查询转换为雄辩的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个Laravel项目,并尝试将此查询转化为雄辩的查询,以便我能够加载其他关系。

I'm working on a Laravel project and trying to convert this query into an eloquent query so I can eager load other relationships.

     $restaurants = DB::query('SELECT *,   ( 3959 * acos( cos( radians(21.420639) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(-157.805745) ) + sin( radians(21.420639) ) * sin( radians( lat ) ) ) ) AS distance FROM restaurants GROUP BY id HAVING distance < 25 AND ratingsTotal > 0 ORDER BY distance LIMIT 0 , 5');

任何关于这个应该如何看待的帮助将真的不胜感激。

Any help on how this should look would really be appreciated.

推荐答案

您的模型将在Laravel 4中看起来像这样.L3可能相当相似,但我没有什么经验。

Your model is going to look something like this in Laravel 4. L3 is probably fairly similar but I have little-to-no experience with that.

<?php 

class Restaurant extends Illuminate\Database\Eloquent\Model
{
    protected $table = 'restaurants';

    public function getSomeShit()
    {
        return $this
            ->select('*')
            ->select(DB::raw('( 3959 * acos( cos( radians(21.420639) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(-157.805745) ) + sin( radians(21.420639) ) * sin( radians( lat ) ) ) ) AS distance'))
            ->groupBy('id')
            ->having('distance', '<', 25)
            ->having('ratingsTotal', '>', 0)
            ->orderBy('distance')
            ->limit(5);
    }
}

记住,你永远不会复杂(或任何)控制器中的数据库逻辑,总是在视图后面。

Remember, that you never put complicated (or any) database logic in the controller, always behind a view.

这篇关于将此查询转换为雄辩的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆