User has_many Categories
Category has_many Posts
当Category和Post同为多态时。这样
class User < ActiveRecord::Base
has_many :categories, :as => :owner #owner_id owner_type
has_many :posts, :through => :categories
end
class Category < ActiveRecord::Base
has_many :posts, :as => :postable #postable_id, postable_type
belongs_to :user, :polymorphic => true
end
class Post < ActiveRecord::Base
belongs_to :postable, :polymorphic => true
end
当调用user.posts时就会报错
错误原因
Unknown column 'categories.postable_id' in 'on clause': SELECT posts.* FROM posts INNER JOIN categories ON
posts.id = categories.postable_id WHERE ((categories.owner_id = 1) AND (categories.owner_type = 'User'))
红色部分期望的应该是posts.postable_id = categories.id,这里正好相反了
而将代码改为
class User < ActiveRecord::Base
has_many :categories, :foreign_key => "owner_id", :conditions => "owner_type = 'User'" #owner_id owner_type
has_many :posts, :through => :categories
end
就可以正常使用了。
y?
分享到:
- 2008-05-28 00:42
- 浏览 768
- 评论(0)
- 论坛回复 / 浏览 (0 / 2183)
- 查看更多
相关推荐
has_many 的计数排序:通过关联: 协会 rails 中的多对多关联: has_and_belongs_to_many: 多态关联: 协会提醒: 包括 文档: 包括 vs 连接: N+1 问题 什么是 n+1 查询问题: 如何诊断n+1问题: 路由/漂亮的 URL ...
属于/有has_many --- --- 模型关联 有很多 通过 为其他模型设置多对多连接 价值对象 由...组成的 --- --- 支持PostgreSQL --- --- 应用网络地址类型 动作视图 概念/功能 方法 选项 象征 加工 提交ID 帮手 url_...
在Ecto中,我们通常使用`has_many`和`belongs_to`来定义一对多或一对一的关联,但这些关联通常限定于两个特定的模型之间。然而,`polymorphic_embed`允许我们将一个模型嵌入到另一个模型中,且被嵌入的模型可以是...
多态测试这个 repo 只是为了描述我在多态 hasMany 关系和 Ember-Data 1.0.0-beta.14.1 版中遇到的一个问题。 在应用程序的新加载时,第一次更改关系并将其保存到服务器时,关系将被清空,同时正确保存后续更新。 这...
has_many :addresses , :as => addressable end class Vendor < Person end 并给出以下代码: vendor = Vendor . create ( ... ) address = vendor . addresses . create ( ... ) p vendor p address 将输出...
在关联的另一端,比如在`Article`和`Product`模型中,我们需要定义一个多态 belongsTo 或 hasMany 的关联。例如,在`Article`模型中: ```php class Article extends Model { public function medias() { return...
在这个项目中,可能会有一个`Comment`模型,它代表数据库中的评论表,并通过Eloquent的关系方法(如hasMany或morphMany)与其他模型关联。 2. **数据库迁移**: "Laravel开发-laravel-commentable"可能包含迁移文件...
在模型类中定义多态关联,如`belongsTo`、`hasMany`或`morphToMany`方法,指定关联的模型和关联类型。 3. **编写报告逻辑:** 在报告类中编写用于生成报告的逻辑,这可能涉及查询数据库、聚合数据、格式化结果等...
比如,一个教师可以教多个班级,你可以使用`hasMany`方法定义教师与班级的关系。反向关系则可以通过`belongsTo`来建立。 3. **多对多关系 (Many-to-Many)** 多对多关系是最复杂的,涉及到一个中间表来存储两个模型...
例如,其他常见的关系类型包括一对一(hasOne / belongsTo),一对多(hasMany / belongsToMany),多对多(belongsToMany),以及多态关联等。在实际项目中,根据业务需求灵活运用这些关系,可以使数据库操作更加...
##Feature 详细信息 ###Lazy 加载所有关系所有DS.belongsTo()和DS.hasMany()关系都应该用{async : true}标记。 这意味着所有关系都是延迟加载的(Hibernate 喜欢这个)。 //blog export default DS . Model . ...
在Laravel中,模型关联主要有以下几种类型:一对一(hasOne)、一对多(hasMany)、多对多(belongsToMany)以及多态关联(morphTo、morphOne、morphMany)。以Laravel为例,我们可以通过定义关联方法来设置这些关系...
- Eloquent支持多种关联关系,如一对一(`hasOne`, `belongsTo`),一对多(`hasMany`, `belongsToMany`),多对多(`belongsToMany`)以及多态关联(`morphOne`, `morphMany`, `morphTo`)。 - 定义关联关系的...
3. **关系(Relationships)**: Eloquent支持多种类型的关系,包括一对一(hasOne)、一对多(hasMany)、多对多(belongsToMany)、多态关系(morphTo、morphOne、morphMany)等。通过定义这些方法,可以在模型之间...
- `hasOne`, `hasMany`, `belongsTo`, `belongsToMany`:定义一对一、一对多、多对一和多对多的关系。 - `with`:用于预加载关联数据,减少N+1查询问题。 - `hasManyThrough`:定义通过中间表建立的多对多关系。 ...
.HasMany(u => u.Articles) .WithOptional(a => a.Author); ``` 3. **配置主键**:可以自定义主键的属性和顺序。比如: ```csharp modelBuilder.Entity() .HasKey(u => new { u.Id, u.Version }); ``` 4. *...
这种关系通过`hasMany`和`belongsTo`定义: ```php // User模型 public function posts() { return $this->hasMany(Post::class); } // Post模型 public function user() { return $this->belongsTo(User::class...
- 远程一对多(Has Many Through) - 多态关联(Polymorphic Relationships) - 远程一对一(Has One Through) ### 遍历数组 在Web开发中,遍历数组是一项基础且重要的操作。Laravel提供了多种方式来遍历数组,...