如何获取未分配标签的模型集合 - Laravel

How get a collection of models with no tags assigned - Laravel

我正在使用 rtconner/laravel-tagging 包来为我的应用程序获取标签功能。

我可以按 $o->tags->count()

计算附加标签

我可以通过 foreach 循环标记:@foreach($o->tags as $t)。 按

打印附加标签

问题

现在我想收集随机 10 个不带标签的报价单。

虽然我可以随机打印 10 件具有给定属性的作品:

$object = Quotation::where('deepness', null)->get()->random(10);

(注意:我在模型中定义了一个随机范围,与我的问题无关)

...但是从另一个模型克隆的这段代码不起作用:

$object = Quotation::whereHas('tags','>',0)->get()->random(10);

它产生此错误消息:

FatalThrowableError in Builder.php line 880: Type error: Argument 2 passed to Illuminate\Database\Eloquent\Builder::whereHas() must be an instance of Closure, string given

我也试过执行这个查询

$object = Quotation::has('tags')->get()->random(10);

但我得到了这个: ``` Builder.php 行 2431 中的 BadMethodCallException: 调用未定义的方法 Illuminate\Database\Query\Builder::tags()

``` 注 2:在源模型(我从中克隆的模型)中,关系正在计算 hasMany 关系。

要做

请帮助我创建未分配标签的语录集

遇到同样的问题,这样解决了:

$objects = Quotation::all();

$objects = $objects->filter(
                function ($object, $key) {
                    return $object->tags->count() > 0;
                }
            )->random(10);

希望问题仍然相关:)