我正在尝试使用Laravel 4.0.x中的Eloquent ORM来执行查询,将行中的列与相关模型的数量进行比较。
假设我在多人关系中有以下模型:
Class
-----
id
name
capacity
Student
-------
id
name
所以说我想知道哪些课程达到或超过了他们的能力。
似乎according to the docs here,我应该可以使用has()
来执行此查询。
但是,如果我这样做:
$classes = Class::has('students', '>=', 50)->get();
我收到BadMethodCallException,说“调用未定义的方法Illuminate \ Database \ Query \ Builder :: has()”。
上面链接的文档中的示例使用了前面提到的One-Many关系。我尝试通过制作每个类StudentLinks
的{{1}}模型来复制它,但它仍然不适用于我。相同的BadMethodCallException。
4.0.x中是否有()实际存在?它在文档中......
这不是唯一的问题,因为尽管我已经知道了,hasMany()
方法,即使它确实存在,也无法访问列,尽管我没有任何证据证明这一点。 。这是由于文档中缺乏信息而引起的猜测。
我想要做的基本上是:
has()
因为容量存储在我正在查询的表格中......但这显然不适合我。在我获得记录之后,获取每个班级的实际学生数量是微不足道的,但我想在一个查询中这样做,所以我可以对它进行分页。选择后执行过滤器会让我难以手动分页,而不是使用Laravel's built-in Pagination。
让我们来谈谈原始数据库,这里:如果我在SQL中这样做,我会这样做:
$full_courses = Class::has('students', '>=', 'capacity')->get();
但我喜欢我的模特。
非常感谢任何帮助。