我有两张关系表。我和where一起使用where来过滤记录,也用where使用where来过滤记录。但却找不到两者的区别
发布于 2022-09-26 12:35:11
如果使用where (条件)->with(关系),查询将返回条件匹配的记录和关系数据(如果有的话)。如果使用where (条件)->whereHas(关系),查询将返回条件匹配的记录和存在关系的地方
发布于 2022-09-26 14:24:19
当您在where()条件中使用with()时,您只在主表上应用条件,而不是在相关表上应用条件,但是当您使用whereHas()时,这将在关系上应用条件,而不是在主表上。e.g
1) User::with("post")->where('id', 1)->first();
2) User::whereHas("post", function (Builder $query) {
$query->where('status', 1);
})->get();
第一个将获取具有用户id 1的用户,而第二个将获取状态发布后的所有用户。
发布于 2022-09-26 19:05:41
1)。其中()
$table::with("relation-name")->where(condition)->get();
简单地用这个"relation-name"
获取数据,这个where(condition)
没有适用于第二个表(关系表)的条件;
2)。何方()
User::where Has("relation-name", function (Builder $query) {
$query->where('status', 1);
})->get();
在第二表(关系表)上有()适用条件;
我的理解和实践也在我的项目中。
https://stackoverflow.com/questions/73852834
复制相似问题