Laravel 不选择所有相关模型

问题描述

如何过滤关系?

我从相关数据中找到了模型。 如何只选择与搜索词匹配的相关模型?

基本查询

 $todolists = TodoList::select(['*']);

  foreach ($tags as $tag) {
                $todolists->whereHas(
                        'item.tag',function ($query) use ($tag) {
                            $query->where('tags.name',$tag);
                        }
                );
            }

我想选择符合搜索条件的相关型号(商品)。

解决方法

这将生成一个非常糟糕的查询(每个标签为 AND WHERE EXISTS( ... ))。

您可以改用 whereIn

ToDoList::whereHas('item.tag',function ($query) use ($tags) {
        $query->whereIn('name',$tags);
    })
    ->get();