where()方法与whereRaw()方法具有相同的幂吗



我有一个视频模型和一个标签型号。比方说,我想得到所有有标签的视频,也许所有与标签有三个以上关系的视频。我会这样做:

Video::has('tags', '>=', 3)->get();

如果我想添加更多的约束,例如,获取所有至少有3个标签的视频,标签名称应包含"something'。我可以这样做:

Video::whereHas('tags' function(Builder $query){$query->where('name', 'like', '%something%');}, '>=', 3)->get();

但如果我想做更多的事情,比如只计算id为奇数/偶数的标签,该怎么办。类似fmod('id', 2)的东西将在闭包内部使用。检查id是偶数还是奇数因为我不能做类似于:$query->where('id%2', '=', 0 );的事情。在这种情况下,我知道我可以使用$query->where('name', 'like', '%something%')->whereRaw('tags.id%2=0');。但是还有其他方法可以使用where((方法吗?

where()的第一个参数将始终是列,但在查询中指定列(如where()select()(的情况下,可以使用DB::raw();这应该使这种语法可行,我认为这是EloquentORM的最佳解决方案。

->where(DB::raw('tags.id%2'), 0);

相关内容

最新更新