【问题标题】:Query that JOINs 2 models ON查询 JOINs 2 模型 ON
【发布时间】:2019-06-12 10:36:26
【问题描述】:

我正在使用 Laravel 5,并且有两个模型 locationchauffeur 与关系

public function chauffeurs() { return $this->hasMany('App\Chauffeur'); }

public function location() { return $this->hasOne('App\Location', 'id', 'location_id'); }

这是我的查询,有效

"SELECT *, 
                    (6371 * acos(cos(radians(".$latitude.")) * cos(radians(latitude)) * cos(radians(longitude) - radians(".$longitude.")) + sin(radians(" . $latitude.")) * sin(radians(latitude)))) AS distance 
                    FROM `locations` AS l
                    JOIN `chauffeurs` AS c
                    ON (l.id = c.location_id)
                    HAVING distance < c.radius
                    ORDER BY distance ";

这是我目前所拥有的

Chauffeur::select('*, (6371 * acos(cos(radians(1.492659)) * cos(radians(latitude)) * cos(radians(longitude) - radians(103.7413591)) + sin(radians(1.492659)) * sin(radians(latitude)))) AS distance ')
    ->join('Location', '`location`.`id`', '=', '`chauffeur`.`location_id`')
    ->havingRaw('distance < `chauffeur`.`radius`')
    ->get();

我得到了这个错误

`Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.`492659)) * sin(radians(latitude))))` as `distance ` from `locations` inner joi'`

如何使用 laravel 模型进行相同的查询?知道我做错了什么或者是否有更好的方法?谢谢

【问题讨论】:

  • 不要在表名和列名上使用反引号

标签: mysql laravel laravel-5 eloquent


【解决方案1】:

使用 DB::raw();与选择查询

【讨论】:

    猜你喜欢
    • 2014-01-30
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多