- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道我可以在 Laravel 中预加载或延迟加载关系。我也知道关系对象基本上是伪装的查询对象,调用 $user->load('teams')
执行该查询并将其添加到 $user 对象(即使我不我不知道到底是怎么回事。)
假设我有一个 User
从评论中获得积分。要在数据库调用中获取用户的积分,我会执行如下操作:
SELECT `user_id`, sum(`points`) AS `total_points` FROM `user_comments` where `id` = ?
如果我想一次加载它们,我会运行这个查询:
SELECT `users`.*, sum(`user_comments`.`points`) AS `total_points`
FROM `users` LEFT JOIN `user_points` ON `users`.`id` = `user_comments`.`user_id`
GROUP BY `users`.`id`
我想使用 Laravel 来完成这些任务。我喜欢写这样的东西
User::where('age', '>', 40)->with('total_points')->get();
并像这样访问值
$user->total_points
同时加载用户和他们的总分。我希望可能有很多很多记录,并且不想每次有用户时都调用数据库连接查询。如果我只需要他们的总分值,我也不希望自己为每个用户加载所有评论。
有没有办法在 Laravel 中使用关系构建器来完成此任务?
最佳答案
在您的用户模型中建立如下关系
public function total_points() {
return $this->hasOne('user_comments')
->selectRaw('sum(points) as points, user_id')
->groupBy('user_id');
}
然后在 Controller 中执行此操作
$user = User::where('age', '>', 40)->with('total_points')->get();
关于php - 我可以在 Laravel 中急切/延迟加载属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428119/
我有一个案例,在大多数情况下,对象之间的关系是这样的,因此在关系上预先配置一个渴望(加入)的负载是有意义的。但是现在我遇到了一种情况,我真的不想完成急切的加载。 我是否应该从关系中删除连接负载并将所有
在我的 Grails 项目中,我有以下类: class A { static hasMany = [cs:C] } class B { static hasMany = [cs:C]
想象一下以下简化的 DI 模型: @ApplicationScoped public class A { private B b; @Inject public A(B b)
我使用 MapLoader 将数据从数据存储初始加载到 Hazelcast (InitialLoadMode = EAGER)。我需要从一个物化 View 中加载这些数据,该 View 是为了在加载过
我使用 Hibernate Envers 4.3.10.Final。我有以下两个 JPA 类: public class Factory { private int factoryID;
EJB 似乎被延迟加载 - 每当访问时。 但是,我想急切地初始化它们 - 即每当容器启动时。这是如何实现的(尤其是在 JBoss 中) This topic给出了一些提示,但不是很令人满意。 最佳答案
我是一名优秀的程序员,十分优秀!