Laravel 5 使用Spatial/laravel标签插件获取相关项目

Laravel 5 使用Spatial/laravel标签插件获取相关项目,laravel-5,tags,Laravel 5,Tags,在my laravel 5.7应用程序中使用Spatiale/laravel标签plugin() 我的Vote模型(app/Vote.php)有标签: <?php namespace App; use DB; use App\MyAppModel; ... use Spatie\Tags\Tag as SpatieTag; use Spatie\Tags\HasTags; class Vote extends MyAppModel { use HasTags; pr

在my laravel 5.7应用程序中使用
Spatiale/laravel标签
plugin()

我的
Vote
模型(
app/Vote.php
)有标签:

<?php

namespace App;

use DB;
use App\MyAppModel;
...
use Spatie\Tags\Tag as SpatieTag;
use Spatie\Tags\HasTags;

class Vote extends MyAppModel
{
    use HasTags;

    protected $table = 'votes';
    protected $primaryKey = 'id';
但tagRelatedVotes为空,查看sql跟踪,我将看到下一步:

   SELECT * 
    FROM `tags` 
    WHERE LOWER(JSON_EXTRACT(slug, "$.en")) like '"%animals%"' limit 1 


   SELECT * 
    FROM `tags` 
    WHERE `name`->'$."en"' = '{"en": "animals"}'     AND `type` = 'votesTagType' limit 1 


   SELECT * 
    FROM `votes` 
    WHERE 
    EXISTS (  SELECT * 
    FROM `tags` 
    INNER JOIN `taggables` on `tags`.`id` = `taggables`.`tag_id` 
    WHERE `votes`.`id` = `taggables`.`taggable_id`     AND `taggables`.`taggable_type` = 'App\Vote'     AND `id` in ('')) 
第一条语句找到行,但第二条语句什么也找不到,这很奇怪为什么在请求中使用name字段? 所以第三条语句是无效的。哪种方法有效

修改块#2: 感谢您的反馈! 我像你写的那样试了,但结果是空的。 我看到下面的sql跟踪:

   SELECT * 
    FROM `tags` 
    WHERE LOWER(JSON_EXTRACT(slug, "$.en")) like '"%thriller%"' limit 1 


   SELECT * 
    FROM `tags` 
    WHERE `name`->'$."en"' = '{"en": "Thriller"}'     AND `type` = 'votesTagType' limit 1 


   SELECT * 
    FROM `votes` 
    WHERE 
    EXISTS (  SELECT * 
    FROM `tags` 
    INNER JOIN `taggables` on `tags`.`id` = `taggables`.`tag_id` 
    WHERE `votes`.`id` = `taggables`.`taggable_id`     AND `taggables`.`taggable_type` = 'App\Vote'     AND `id` in ('')) 
第一条语句返回了一行,但第二条语句没有返回任何内容,但我有一行的名称为'Thriller'和
type
='votesTagType'。 我不知道是什么表情

`name`->'$."en"' = '{"en": "Thriller"}' 
也就是说,这超出了我的mysql经验。CXan是一些mysql还是这个插件选项? 我有:


谢谢

必须将标记的
名称
传递给
withAnyTags()
方法


请看修改后的块#2是否拼写错误,将数组中的对象[$activeTag]设置为withAnyTags?您可以将整个标记模型传递到
withAnyTags()
,而不仅仅是名称
`name`->'$."en"' = '{"en": "Thriller"}' 
   SELECT version() : 5.7.23-0ubuntu0.18.04.1
$activeTag = Tag::containingSlug($tag_slug)->first();
$tagRelatedVotes= Vote::withAnyTags( [$activeTag], 'votesTagType' )->get();