Laravel 5 使用Spatial/laravel标签插件获取相关项目
在my laravel 5.7应用程序中使用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
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();