当前位置: 首页 > 知识库问答 >
问题:

where子句查询返回false条件下的集合的雄辩嵌套关系

岳风畔
2023-03-14

我试图搜索所有的租金,有一个RentItem的书名像给定的$input。

问题是当输入不匹配时,我仍然返回一个集合。唯一的区别是book关系是null而不是Collection。

当book等于null时,我不希望租金模型被退回。

我的查询

$rents = Rent::with(['rentItems.book' => function ($query) use ($input) { 
       $query->where('books.title', 'LIKE', "%$input%"); 
}])->get();

租金模型关系

public function rentItems()
{
  return $this->hasMany(RentItem::class);
}
public function book()
{
     return $this->belongsTo(Book::class);
}

public function rent()
{
     return $this->belongsTo(Rent::class);
}

我做过的研究:

  • https://laracasts.com/discuss/channels/laravel/eloquent-nested-relations-with-where-claus
  • https://laracasts.com/discuss/channels/eloquent/using-wherehas-and-with
  • https://laravel.com/docs/5.6/eloquent-relationship#constraining-eager-loads

共有1个答案

邹举
2023-03-14

您需要使用wherehas()方法。做这样的事情:

$rents = Rent::whereHas('rentItems.book', function ($query) use ($input) { 
    $query->where('books.title', 'LIKE', "%$input%"); 
})->get();
 类似资料:
  • 问题内容: 对于拍摄特定的对象我有目标的一个在线竞赛 用户 上传 图片 的 对象 ,其中对象具有 类别 和 子类别 。 用户的仪表板应如下所示: 为了能够在适当的循环中输出图片,我在模型之间安装了 hasMany 关系。所以我可以通过以下方式获得具有方便层次结构的对象 问题: 对于仪表板,我当然只希望来自某个用户的图像: Pictures 模型包含一个 user_id 字段。我可以直接获取用户的图

  • 我有一个问题,我很难用laravel雄辩的ORM编写这个问题。 如果有人能帮忙,我将不胜感激。 下面是SQL表达式:

  • 我有两个模型。模型有一个(关系)。 关于模型,我有以下关系:

  • 你一定看过下面的功能(在facebook上),一个有一些评论的帖子,每个评论都有一个类似的计数器。 https://img4.hostingpics.net/pics/67853820170616003640LaravelNewsAccueil.png 在拉雷维尔,这将是类似的 帖子有很多评论 以下评论发布 类似于用户的评论 CommentLike belong评论 评论有很多类似的评论 所以,现

  • 我有以下三个表格: 帖子 帖子: 评论: 标签: Post表有许多注释,comments表有许多与之关联的标记。 如何使用“快速加载”将所有这些表组合在一起? 比如: 但是这个查询总是在标记关系中返回空响应。 我做错了什么? 期望的结果是这样的: 你可以看到帖子里面包含评论,评论里面也包含标签关系。 另外,我在我的项目中使用了“jenssegers/laravel mongodb”包,我试图在没有

  • 问题内容: 我有一个查询,当前正在使用相关子查询来返回结果,但是我认为可以使用ROW_NUMBER()更雄辩地解决问题。 问题围绕着值v的分布,通过项的年数。每个项目都有多个版本,每个版本都有自己的配置文件,在引入版本时即会启动,当前数据如下所示: 我想使用适用的最新版本返回商品的完整资料。对于项目1的上述示例: 我目前正在使用 尽管这会返回正确的值,但我怀疑有一种更有效的方法来执行此操作,尤其是