假设您有一个任意数字表,希望允许用户将tag附加到该表。例如,Stackoverflow允许我们标记一个问题,但也许它也可以让我们标记一个答案、一个作业、我们的用户配置文件等等。
什么是实现这一决定的最佳方式,作出这一决定需要哪些信息?
在每个要标记的表和tag表之间创建一个M:N
+----<tag_foo>----foo
|
tag
|
+----<tag_bar>----bar
查找带有标记= 'rdbms‘的所有Foos
SELECT foo.*
FROM tag JOIN tag_foo ON (tag.id = tag_foo.tag_id)
因此,我正在尝试创建一个taggable表,它允许多个models具有与它们相关联的标记,并认为Laravel的将是可行的。
不幸的是,我似乎无法让他们在下面的设置中工作。因为我在运行php artisan migrate:refresh --seed时收到以下错误。
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class name must be a valid object or a st
我有一张标签桌。该表中与此问题相关的行是: tag_id和taggable_id。我想选择一个包含所有taggable_id _id的标签。但是这个查询是空的:
SELECT taggable_id,
tag_id
FROM taggings
WHERE tag_id IN( 73, 76 )
AND taggable_id = 3238
GROUP BY tag_id
HAVING Count(tag_id) = 2
现在,当我使用不带计数的查询时,我得到了2行结果:
SELECT taggable_id,
tag_id
FR
我有一个多态标签,并希望通过此标签搜索不明确的项目。
我怎样才能退还这个带有葡萄实体的东西?
class Tag < ActiveRecord::Base
belongs_to :taggable, polymorphic: true
end
class Article < ActiveRecord::Base
has_many :tags, as: :taggable
end
class Post < ActiveRecord::Base
has_many :tags, as: :taggable
end
module Api
module Entit
我对Laravel很陌生。我安装了RConner的Laravel标签插件。效果很好。
在一篇文章中,我想得到其他有类似标签的帖子(Taggable)。我知道我可以使用sql联接和计数(但不是真正的方法)来完成这个任务。
我试图在TaggableTrait中添加一个作用域方法,但是我正在与联接进行斗争。我想知道是否有一个“拉勒维尔的方式”来做魔术。
谢谢!
编辑:实际上,我试图实现的是检索“taggable”,按当前内容的公共标记数量排序。
我试图在TaggableTrait中添加一个作用域-方法,例如:
public function scopeWithCommonTag($query, $t
我正在致力于将插件转换为gem。在其中一个模型中,我使用了acts_as_taggable_on,它看起来像这样
class BlogPost < ActiveRecord::Base
acts_as_taggable
....
end
然而,当我运行它时,我得到了这个错误:
undefined local variable or method `acts_as_taggable' for #<Class:0x000000060799b8>
堆栈跟踪如下所示:
activerecord (3.1.0) lib/active_record/base.rb:10
也许这是胡扯,但我正在尝试使用Grails Liquibase插件,它似乎与Taggable插件存在兼容性问题。taggable插件的工作原理是在您想要标记的域类上实现Taggable。
当我尝试运行Liquibase命令grails generate-changelog时,在实现Taggable的类上得到以下异常
java.lang.RuntimeException: Unable to locate constructor with Class parameter for class org.codehaus.groovy.grails.commons.DefaultGrailsContr
rails g model Article name:string
rails g model Category name:string
rails g model Tag name:string taggable_id:integer taggable_type:string category_id:integer
我已经创建了模型,如前面的代码所示。文章将是众多可以有标签的模型中的一个。类别模型将包含可以分配的所有类别。标记模型将是一个表示标记关系的多态连接表。
class Article < ActiveRecord::Base
has_many :tags, :as =>
我正在尝试创建一个标记系统,现在我得到了两张表,如下图所示
标签
塔格
我想基于Journal和id标记`tag_id。但是,日记总是在taggable表中创建一个新记录。
这是我的模特关系
标签
class Tag extends Model
{
public function purchases()
{
return $this
->morphedByMany('Purchase', 'taggable');
}
public
我有pivot taggable,它是Laravel中的多对多多态关系(Tag和post)的表:
taggable_id - id of Post
tag_id - id of Tag
taggable type - location of post model (default value"App/Models/Posts/Post")
is_search_term - boolen (0 or 1)
如何为id为1 (taggable_id)的帖子创建种子设置为0标签id。
对于id为%2的post,设置标签id为% 1。
对于id为3的post,设置标签id为1和id为2
script/generate acts_as_taggable_on_migration
rake db:migrate
原因
Mysql::Error: Specified key was too long; max key length is 1000 bytes: CREATE INDEX `index_taggings_on_taggable_id_and_taggable_type_and_context` ON `taggings` (`taggable_id`, `taggable_type`, `context`)
我该怎么办?
下面是我的数据库编码:
mysql>
我无法在保存到数据库中的多到多多态关系中获得相关的模型。
$photo = Photo::find(1);
$photo->articles()->attach(2);
像这样的东西是行不通的
错误:调用未定义的方法Illuminate\Database\Query\Builder::articles()‘
怎么做才是正确的呢?
模型
class Tag extends Eloquent
{
public function articles()
{
return $this->morphedByMany('Article'
我有一个SQL查询,用于基于标记搜索项目。如果任何标签都匹配的话,它就能正常工作。
SELECT *
FROM projects
WHERE projects.id IN (SELECT taggable_id
FROM taggings
WHERE taggable_type='Project'
AND taggable_id=projects.id
AND taggings.tag
如果我写这篇文章,一切都会很好:
class A < ActiveRecord::Base
acts_as_taggable
end
但是,如果我将acts_as_taggable放入A类包含的模块中,则会得到一个错误:
module B
def self.included(base)
base.class_eval do
extend ClassMethods
include InstanceMethods
end
end
module ClassMethods
acts_as_taggable
end
modul
我正在创建一个rails应用程序,允许用户创建一个post并向其添加标记。我正在尝试实现一个搜索栏,它可以通过显示包含用户搜索的标记的所有帖子来搜索标记并过滤结果。我已经安装了acts_as_taggable_on宝石。
下面是我的Post模型,在这里我正在尝试实现目前不起作用的搜索方法:
class Post < ActiveRecord::Base
belongs_to :user
acts_as_taggable
def self.search(search)
where("tag_list LIKE", "%#{search}")
end
我决定不使用gem ,但由于某些原因,我在取消迁移时遇到了困难。有5项:
** ^ more migrations ^ **
up 20151018064454 Acts as taggable on migration.acts as taggable on engine
up 20151018064455 Add missing unique indices.acts as taggable on engine
up 20151018064456 Add taggings counter cache to tags.acts as ta