dongzituo5530
2016-08-31 17:13
浏览 94
已采纳

如何使用laravel的查询构建器命名绑定?

I'd like to do the following:

MyModel::where(MyModel::sql_distance_to(), ['lat' => '...', 'lng' => '...'])->get();

Where sql_distance_to() returns some complex sql expression. But from what I can see, query builder doesn't support named bindings. Is this true? Any workaround?

图片转代码服务由CSDN问答提供 功能建议

我想执行以下操作:

  MyModel  :: where(MyModel :: sql_distance_to(),['lat'=>'...','lng'=>'...']) - > get(); 
    
 
 

其中 sql_distance_to()返回一些复杂的sql表达式。 但是从我所看到的,查询构建器不支持命名绑定。 这是真的? 任何解决方法?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongyuan2388 2016-08-31 20:00
    已采纳

    I belive you mean using Query Scopes

    class MyModel extends Model
    {
        public function scopeSqlDistanceTo($query, $lat, $lon)
        {
            // Previously DB::raw(expr) was here.
            // No need since we're using whereRaw()
            $whereRaw = 'lat = ? AND lon = ?';
    
            return $query->whereRaw($whereRaw, [$lat, $lon]);
        }
    }
    

    Usage:

    $latitude = 0.0;
    $longitude = 180.0;
    MyModel::sqlDistanceTo($latitude, $longitude)->get();
    
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题