![](/img/trans.png)
[英]Check if hasMany Relationship Exists in Laravel 8 Before Deleting Record
[英]Laravel with() relationship if record exists
想象一下这个简单的查询。
User::with(['company' => function ($query) use($request) {
$query->where('companies.name', 'like', '%'.$request->name.'%');
}])->get();
如果指定的公司不存在,则可能返回类似于以下集合的内容。
"data": [
{
"id": 1,
"company": null
}
],
即使公司值为null
,查询也会运行并返回一个集合。 问题是在这种情况下我不希望返回记录。 我只想要“公司”不为空的记录。
如何在查询中实现呢?
使用->with(["company" => function(){ ... }])
不会基于逻辑过滤父User
查询,它只是限制了company
关系中返回的内容。 要限制AND过滤器,您需要将->whereHas()
与->with()
:
User::with(["company"])->whereHas("company", function($query) use($request){
$query->where("companies.name", "like", "%".$request->name."%");
})->get();
在某些情况下,你可能需要复制的逻辑->whereHas()
在功能->with()
但因为你是限制基于关系的查询结果,你不应该。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.