标签: relationship

Laravel在关系对象上的位置

我正在使用Laravel 5.0开发web apis,但我对查询有疑问.我的课程是:

class Event extends Model {

    protected $table = 'events';
    public $timestamps = false;

    public function participants()
    {
        return $this->hasMany('App\Participant', 'IDEvent', 'ID');
    }

    public function owner()
    {
        return $this->hasOne('App\User', 'ID', 'IDOwner');
    }
}
Run Code Online (Sandbox Code Playgroud)

class Participant extends Model {

    protected $table = 'participants';
    public $timestamps = false;

    public function user()
    {
        return $this->belongTo('App\User', 'IDUser', 'ID');
    }

    public function event()
    {
        return $this->belongTo('App\Event', 'IDEvent', 'ID');
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我希望用特定的partecipant获取所有事件.我尝试过:

Event::with('participants')->where('IDUser', 1)->get();
Run Code Online (Sandbox Code Playgroud)

但where条件适用于Event的类而不是Partecipants.这给了我一个例外:

Participant::where('IDUser', 1)->event()->get();
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样写:

$list = Participant::where('IDUser', 1)->get();
for($item …
Run Code Online (Sandbox Code Playgroud)

php relationship where-clause laravel eloquent

46
推荐指数
6
解决办法
8万
查看次数

如何从django模板访问多对多"直通"表的属性?

从Django文档......

当您只处理简单的多对多关系时,例如混合和匹配比萨饼和浇头,您只需要一个标准的ManyToManyField即可.但是,有时您可能需要将数据与两个模型之间的关系相关联.

例如,考虑应用程序跟踪音乐家所属的音乐组的情况.一个人与他们所属的组之间存在多对多关系,因此您可以使用ManyToManyField来表示此关系.但是,您可能希望收集的成员资格有很多详细信息,例如此人加入该组的日期.

对于这些情况,Django允许您指定将用于管理多对多关系的模型.然后,您可以在中间模型上添加额外的字段.中间模型与ManyToManyField相关联,使用through参数指向将充当中介的模型.对于我们的音乐家示例,代码看起来像这样:

class Person(models.Model):
    name = models.CharField(max_length=128)

    def __unicode__(self):
        return self.name

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

    def __unicode__(self):
        return self.name

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)
Run Code Online (Sandbox Code Playgroud)

现在您已经设置了ManyToManyField以使用您的中间模型(在这种情况下为Membership),您已准备好开始创建一些多对多关系.您可以通过创建中间模型的实例来完成此操作:

ringo = Person.objects.create(name="Ringo Starr")
paul = Person.objects.create(name="Paul McCartney")
beatles = Group.objects.create(name="The Beatles")

m1 = Membership(person=ringo, group=beatles,
...     date_joined=date(1962, 8, 16),
...     invite_reason= "Needed a new drummer.")

m1.save()

beatles.members.all()
[<Person: Ringo Starr>]

ringo.group_set.all()
[<Group: The Beatles>]

m2 = Membership.objects.create(person=paul, group=beatles, …
Run Code Online (Sandbox Code Playgroud)

python django many-to-many django-templates relationship

45
推荐指数
2
解决办法
3万
查看次数

如何在laravel中重新加载关系集合?

在laravel中,使用attach()或detach()来添加或删除关系中的某些内容后,该集合未更改.因此,如果我的模型的realation包含[1, 2],则在此之后:

$model->relation()->detach(1);
$model->relation()->attach(3);
Run Code Online (Sandbox Code Playgroud)

它仍将包含[1, 2]!我该如何刷新它?

php collections relationship laravel laravel-4

43
推荐指数
4
解决办法
2万
查看次数

什么rel =个人资料是为了什么?

在为我的新模板执行HTML时,我偶然发现了一个新的元标记

<link rel="profile" href="http://gmpg.org/xfn/11" />
Run Code Online (Sandbox Code Playgroud)

这是用来干嘛的?我发现它链接到这个页面,并通过谷歌我找到了这个Microformat,但我没有得到它.

html microformats rel relationship

40
推荐指数
1
解决办法
3万
查看次数

在sqlalchemy中插入具有一对多关系的新记录

我正在遵循flask-sqlalchemy教程,宣布关于一对多关系的模型.示例代码如下:

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    addresses = db.relationship('Address', backref='person',
                                lazy='dynamic')

class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(50))
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'))
Run Code Online (Sandbox Code Playgroud)

现在我想知道如何使用这样的模型将新记录插入到DB中.我假设我需要一个构造函数init,但我很难理解它应该如何实现和使用.我这里的主要问题是Person依赖于地址和地址有ForeignKey to Person,所以它应该提前知道Person.

Plase帮助我理解它应该如何执行.

先感谢您.

python sqlalchemy foreign-keys relationship flask-sqlalchemy

37
推荐指数
2
解决办法
3万
查看次数

Laravel:获取特定多对多关系的数据透视数据

我的User模型有很多Target,反之亦然.现在我得到了一个给定User和给定的Target,我想从他们的关系访问枢轴数据.枢轴列被调用type

我怎样才能做到这一点?

relationship laravel

37
推荐指数
1
解决办法
5万
查看次数

如何使用localdb查看代码中的数据库图表

我有一个使用创建的Code First项目.虽然我可以看到我的班级关系,如何看到自动生成数据库的可视化图表?Entity Framework 5.0.0localdbVisual Studio 2012 UltimateClass DiagramEF

database diagram entity-framework relationship visual-studio-2012

31
推荐指数
2
解决办法
3万
查看次数

HABTM多态关系

我是Rails的新手,我正在尝试建立多态HABTM关系.问题是我有三个我想要关联的模型.

第一个是事件模型,然后是两种与会者:用户和联系人.

我想要做的是能够作为参与者与用户和联系人联系.那么,我现在在我的代码中拥有的是:

事件模型

has_and_belongs_to_many :attendees, :polymorphic => true
Run Code Online (Sandbox Code Playgroud)

用户模型

has_and_belongs_to_many :events, :as => :attendees
Run Code Online (Sandbox Code Playgroud)

联系型号

has_and_belongs_to_may :events, :as => :attendees
Run Code Online (Sandbox Code Playgroud)
  1. HABTM表迁移需要如何?我有点困惑,我没有找到任何帮助.
  2. 它会起作用吗?

polymorphism activerecord relationship has-many-polymorphs ruby-on-rails-3

26
推荐指数
1
解决办法
8972
查看次数

将记录添加到has_and_belongs_to_many关系中

我有两个模型,用户和促销活动.这个想法是促销可以有很多用户,用户可以有很多促销.

class User < ActiveRecord::Base
  has_and_belongs_to_many :promotions
end

class Promotion < ActiveRecord::Base
  has_and_belongs_to_many :users
end
Run Code Online (Sandbox Code Playgroud)

我还有一个promotion_users表/模型,没有自己的id.它引用了user_id和promotions_id

class PromotionsUsers < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

那么,如何将用户添加到促销中?我尝试过这样的事情:

user = User.find(params[:id])
promotion = Promotion.find(params[:promo_id])
promo = user.promotions.new(promo)
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

NoMethodError: undefined method `stringify_keys!' for #<Promotion:0x10514d420>
Run Code Online (Sandbox Code Playgroud)

如果我尝试这一行:promo = user.promotions.new(promo.id)

我收到此错误:

TypeError: can't dup Fixnum
Run Code Online (Sandbox Code Playgroud)

我确信我的问题有一个非常简单的解决方案,而我只是没有以正确的方式寻找解决方案.

ruby-on-rails relationship has-and-belongs-to-many

25
推荐指数
3
解决办法
2万
查看次数

Elasticsearch关系映射(一对一和一对多)

在我的弹性搜索服务器中,我有一个索引http://localhost:9200/blog.
(博客)索引包含多种类型.

例如:http://localhost:9200/blog/posts,http://localhost:9200/blog/tags.

在标签类型中,我创建了超过1000个标签和10个帖子类型的帖子.

例如:帖子

{   
    "_index":"blog",
    "_type":"posts",
    "_id":"1",
    "_version":3,
    "found":true,
    "_source" : {
        "catalogId" : "1",
       "name" : "cricket",
       "url" : "http://www.wikipedia/cricket"
    }
}
Run Code Online (Sandbox Code Playgroud)

例如:标签

{   
    "_index":"blog",
    "_type":"tags",
    "_id":"1",
    "_version":3,
    "found":true,
    "_source" : {
        "tagId" : "1",
        "name" : "game"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将现有标签分配给博客帖子(即relationship => mapping).

如何将标签分配给帖子映射?

mapping relationship elasticsearch elastica

25
推荐指数
1
解决办法
1万
查看次数