【发布时间】:2022-01-13 20:57:07
【问题描述】:
我有一个视频模型和一个标签模型。假设我想获取所有带有标签的视频,也许是所有与标签有三个以上关系的视频。我会这样做:
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() 方法吗?
【问题讨论】:
-
不确定您要寻找什么样的答案。显然没有
whereEvenNumber方法,所以你所拥有的就是你最好的选择。