- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现这些方法背后的概念和含义有点令人困惑,是否有人可以向我解释一下 has
和 with
之间的区别是,在示例的上下文中(如果可能的话)?
最佳答案
with()
用于急切加载。这基本上意味着,沿着主模型,Laravel 将预加载您指定的关系。如果您有一组模型并且想要加载所有模型的关系,这尤其有用。因为通过预先加载,您只需运行一个额外的数据库查询,而不是为集合中的每个模型运行一个查询。
示例:
用户 > hasMany > 帖子
$users = User::with('posts')->get();
foreach($users as $user){
$users->posts; // posts is already loaded and no additional DB query is run
}
has()
是根据关系过滤选择模型。因此它的行为与正常的 WHERE 条件非常相似。如果您只使用 has('relation')
这意味着您只想获取在该关系中至少有一个相关模型的模型。
示例:
用户 > hasMany > 帖子
$users = User::has('posts')->get();
// only users that have at least one post are contained in the collection
whereHas()
的工作原理与 has()
基本相同,但允许您为要检查的相关模型指定其他过滤器。
示例:
用户 > hasMany > 帖子
$users = User::whereHas('posts', function($q){
$q->where('created_at', '>=', '2015-01-01 00:00:00');
})->get();
// only users that have posts from 2015 on forward are returned
关于Laravel - Eloquent "Has"、 "With"、 "WhereHas"- 它们是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30231862/
我正在从某个数据范围中选择所有ScheduledPrograms,其中包含属于某个用户的参加者。我想添加一个过滤器以仅选择数据透视字段 registered=1 所在的 SchduledProgram
我正在使用 Eloquent 构建应用程序并遇到了麻烦,我正在使用多对多 Pivot 关系。 引用:https://laravel.com/docs/5.0/eloquent#many-to-many
我有三个表: 交易模式: class Deal extends Model { protected $guarded = ['id']; public function hotel()
如何查询关系并仍然包含没有关系的模型?有两种型号 商店 产品 代码 // Store public function products() { $this->belongsToMany('App
这是我在这里发表的第一篇文章,所以请原谅任何错误:) 我目前正在从事库存管理应用程序(Laravel)的项目。我已经到了我所做的一切都不起作用的地步,所以现在我请求帮助。 我有一个包含产品的表,其中一
我有三个型号 Period , Post , User : period和 posts在 period_posts 上有 M:N 关系 posts和 user在 views 上有 M:N 关系 期间型
我正在努力避免 DRY在我的查询构建器中,特别是在链中添加额外的方法。 例如,这最初是我拥有的查询构建器: $products = $app->myShop->realProducts()
所以我想获得最后状态等于给定状态的请求我试过 first() 但它给了我一个错误并且限制不起作用 $requests = Request::whereHas('requestStatus', func
我有两个具有一对多关系的表。 预订 - (id) booking_tasks - (id, booking_id,user_id) 一个预订有很多任务一项任务有一个预订 预订模式: public f
我发现这些方法背后的概念和含义有点令人困惑,是否有人可以向我解释一下 has 和 with 之间的区别是,在示例的上下文中(如果可能的话)? 最佳答案 与 with() 用于急切加载。这基本上意味着,
我正在使用新的 whereHas 方法在 Laravel 4.1 中添加对急切加载关系的约束。 $broadcast = $broadcast->whereHas('season', function
我有两个表 - 联系人和访问: 联系人表 id | name ----- | ------- 1 | Joe 2 | Sally 访问表 id | con
我有两个具有多对多关系的主表和一个数据透视表。 模型“类型” public function attributes() { return $this->belongsT
假设我有两个模型, Block 和Slot 各自的表结构为:- blocks(id, name); slots(id, block_id, time, status); slots.status 的值
这是 Laravel 5 应用程序中 Eloquent 类之间的一些关系: B属于A B有一个C 表是用正确的外键构建的。这是 A 的作用域方法: public function scopeMySco
基于公寓查找器,显示/返回所有具有公寓的类型,基于表单搜索。这是使用 whereHas 查询完成的。 例如: A user has different choices; a garden/balcon
我使用此查询过滤掉具有城市和类别的商店。当我在 stores 表中有大约 1000 条记录时,它工作正常。现在,当我有 5000 条记录时,生成结果大约需要 3-10 秒。 在我的案例中,一家商店属于
这个问题是关于:Laravel (5.3) Eloquent - Relationship issue , 请访问此 url 以获取更多信息。 我最终得到了以下脚本: $genres = ['acti
问题:我只想在客户已经下了当年的订单的情况下获得他们。客户和订单位于两个单独的数据库中(这不能更改)。这些关系都已设置并正常工作,但是当我尝试以下操作时,我不断收到 SQL 错误,因为它试图在“客户”
目前我的模型集合中有这个 whereHas: $query = self::whereHas('club', function($q) use ($search) { $q->whereHas
我是一名优秀的程序员,十分优秀!