标签: relationships

Neo4J与时间限制的关系

我在节点之间有关系,这些关系仅在特定时间内有效.简单示例:从时间t1到时间t2,人P居住在地址A. 我可以在关系上放置一个validFrom和一个validUntil属性,但是在使用cypher时,我必须在WHERE子句中对此进行文件管理,但我希望在MATCH子句中使用它.

我想在MATCH子句中使用它的原因是它可能会遍历一个大的子图,但后来才发现它的大部分都可以被忽略.这与大量的历史关系尤其如此.

我可以将单独的validFrom和validUntil关系设置为特定的日期节点.这样我可以使用MATCH.如果我有一组有限的时间节点,那就没问题,但是当我必须存储时间戳时,这样做是不切实际的.

如何针对此类查询优化Cypher?如何使用具有时间有效性指标的节点和关系对图表进行时间切片?

versioning neo4j relationships cypher

12
推荐指数
1
解决办法
850
查看次数

Laravel关系

我一直在文档中查看Laravel 4中的关系,我正在努力解决以下问题.

我的数据库中有一个名为'events'的表.该表具有各种字段,主要包含与其他表相关的ID.例如,我有一个'课程'表.事件表包含一个名为"course_id"的字段,该字段与courses表中"id"字段的ID相关.

所以基本上,我正在讨论如何关联两者(belongsTo()?)然后将连接的数据传递给视图.

这是我到目前为止的地方http://paste.laravel.com/pf3.

我希望你们能够就如何最好地解决这个问题给我一些建议.谢谢.

GAZ

belongs-to relationships laravel eloquent laravel-4

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

核心数据删除规则和多对多关系

假设您有部门和员工,每个部门都有几名员工,但每个员工也可以成为多个部门的一部分.

因此,员工和部门之间存在多对多的关系.删除部门时,我希望删除仅属于该部门的所有员工,并取消与该部门的关系,以便同时也是其他部门成员的所有员工.

两个方向的级联规则是否会这样做?或者,级联规则是否自动删除部门的所有员工,而不管其他任何从属关系?

cocoa database-design core-data objective-c relationships

11
推荐指数
2
解决办法
3258
查看次数

在Entity Framework 4.1 Code First中创建双向一对一关系

我想使用EF Code First在两个实体之间创建双向一对一关系.我遇到以下代码的问题.你觉得我应该怎么做?

public class User
{
    public string ID { get; set; }
    public string LastName { get; set; }
    public string Password { get; set; }
    public string FirstName { get; set; }

    public int ProfileID { get; set; }
    public Profile Profile { get; set; }

}
public class Profile
{
    public int UserID { get; set; }
    public User User { get; set; }
    public int ProfileID { get; set; }
    public string ProfileName { get; …
Run Code Online (Sandbox Code Playgroud)

code-first relationships entity-framework-4.1

11
推荐指数
1
解决办法
4675
查看次数

Laravel Sync错误

我正在运行以下代码,

if( $organisation->save() ) {

        if(isset($members)) {
            $organisation->users()->sync($members);
        }

        if(isset($teams)) {
            $organisation->teams()->sync($teams);
        }

        if(isset($teams)) {
            $organisation->clients()->sync($clients);
        }

        if(isset($projects)) {
            $organisation->projects()->sync($projects);
        }

        $organisation->load('users');
        $organisation->load('teams');
        $organisation->load('clients');
        $organisation->load('projects');

        return Response::make($organisation, 200);

    }
Run Code Online (Sandbox Code Playgroud)

我尝试同步时收到以下错误$projects,

数组看起来像这样,

[0] => 6所以一个非常非常简单的数组.我在模型中的关系看起来像这样,

组织

public function projects()
{
    return $this->hasMany('Project');
}
Run Code Online (Sandbox Code Playgroud)

项目

public function organisations()
{
    return $this->belongsToMany('Organisation', 'organisation_id');
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我组织可以拥有许多项目.我看不出有什么原因会导致以下错误,

调用未定义的方法Illuminate\Database\Query\Builder :: sync()

php relationships laravel eloquent

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

Rails accepted_nested_attributes_for child在验证时没有父集

我在验证时试图在我的子模型中访问我的父模型.我在has_one上发现了一些关于反属性的东西,但是我的Rails 2.3.5无法识别它,所以它一定没有进入发行版.我不确定它是否正是我所需要的.

我想根据父属性有条件地验证子项.我的父模型已经创建.如果在我对父项进行update_attributes时尚未创建子项,则它无权访问父项.我想知道如何访问这个父母.它应该很简单,像parent.build_child这样设置子模型的parent_id,为什么在为accepts_nested_attributes_for构建子项时没有这样做?

例如:

class Parent < AR
  has_one :child
  accepts_nested_attributes_for :child
end
class Child < AR
  belongs_to :parent
  validates_presence_of :name, :if => :some_method

  def some_method
    return self.parent.some_condition   # => undefined method `some_condition' for nil:NilClass
  end
end
Run Code Online (Sandbox Code Playgroud)

我的表格是标准的:

<% form_for @parent do |f| %>
  <% f.fields_for :child do |c| %>
    <%= c.name %>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

使用更新方法

def update
  @parent = Parent.find(params[:id])
  @parent.update_attributes(params[:parent])   # => this is where my child validations take place
end
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails relationships

10
推荐指数
4
解决办法
6113
查看次数

如何在Entity Framework Code First中设置0 ..*关系?

我有两个类的下一个代码:

public class Object
{
    public int ObjectID { get; set; }

    public int Object2ID { get; set; }
    public virtual Object2 Object2 { get; set; }
}

public class Object2
{
    public int Object2ID { get; set; }

    public virtual ICollection<Object> Objects { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我知道使用Entity Framework,这将创建一对多关系,但我想知道的是如何将其转换为零对多关系.

我是Entity Framework的新手,我找不到任何直接的答案.

c# entity-framework relationships object-relationships

10
推荐指数
1
解决办法
6613
查看次数

SQLAlchemy与Postgresql ARRAY的关系

假设我们有一个带有两个表A,B的PostgreSQL数据库.

table A columns: id, name
table B columns: id, name, array_a

array_a表B中的列包含表A中的可变长度的数组.在SQLAlchemy中,我们有两个类来模拟这些表,比如A类和B类.

以下工作正常,以获取对象B中引用的所有对象A:

session.query(A).join(B, A.id == func.any(B.array_a)).filter(B.id == <id>).all()
Run Code Online (Sandbox Code Playgroud)

我们如何在B中创建一个引用与数组对应的对象A的关系?尝试使用func.any上面的列比较器,但它抱怨ANY(array_a)不是模型中的列.如上所述指定primaryjoin条件似乎也没有削减它.

arrays postgresql sqlalchemy relationships

9
推荐指数
2
解决办法
4792
查看次数

如何在Eloquent关系中对一个数据透视表列进行GROUP和SUM?

在Laravel 4; 我有模型ProjectPart,他们有一个透视表许多一对多的关系project_part.数据透视表有一列count,其中包含项目中使用的部件ID的编号,例如:

id  project_id  part_id count
24  6           230     3
Run Code Online (Sandbox Code Playgroud)

这里的project_id6,是使用3件part_id230.

对于同一项目,可以多次列出一个部分,例如:

id  project_id  part_id count
24  6           230     3
92  6           230     1
Run Code Online (Sandbox Code Playgroud)

当我显示项目的零件清单时,我不想显示part_id两次,所以我将结果分组.

我的项目模型有:

public function parts()
{
    return $this->belongsToMany('Part', 'project_part', 'project_id', 'part_id')
         ->withPivot('count')
         ->withTimestamps()
         ->groupBy('pivot_part_id')
}
Run Code Online (Sandbox Code Playgroud)

但当然我的count价值不正确,这就是我的问题:如何获得项目所有分组部分的总和?

这意味着我的零件清单project_id应该如下所示:

part_id count
230     4
Run Code Online (Sandbox Code Playgroud)

我真的很想把它放在Projects- Parts关系中,所以我可以急于加载它.

如果没有得到N + 1问题,我无法解决如何做到这一点,任何见解都表示赞赏.


更新:作为临时解决方案,我创建了一个presenter方法来获取项目中的总计数.但这给了我N + 1的问题.

public …
Run Code Online (Sandbox Code Playgroud)

relationships laravel eloquent laravel-4

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

Sequelize hasMany加入协会

我正在扩展我的应用程序,我需要加入我之前用Sequelize创建的两个模型,它们如下:

膳食

sequelize.define('meal', {
    mealId: {
        type: DataTypes.INTEGER, 
        primaryKey: true,
        autoIncrement: true
    },
    quantity: {
        type: DataTypes.DECIMAL,
        allowNull: false
    },
    period: {
        type: DataTypes.INTEGER,
        allowNull: false
    }
})
Run Code Online (Sandbox Code Playgroud)

餐饮

sequelize.define('food', {
    idFood: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    nameFood: {
        type: DataTypes.STRING,
        allowNull: false
    }
})
Run Code Online (Sandbox Code Playgroud)

我添加了以下关系:

db.food.hasMany(db.meal, {as : 'Food', foreignKey : 'idFood'});
Run Code Online (Sandbox Code Playgroud)

这一行在Meal上添加了一个idFood列

赶紧解释到底是怎么回事,粮食是许多食品(废话),如面包,大米,豆类等表膳食是识别哪些食物用户与他们的信息选择了一个表.

因此,我的理解是,Meal有很多食物(正如我之前添加的那样)但是Food并不需要与Meal有任何关系,因为它只保存数据并且在我第一次填充之后没有改变.但当我试图加入他们时:

db.meal.findAll({ include : [db.food] }).then(function (meals) {
    console.log(JSON.stringify(meals));
}); …
Run Code Online (Sandbox Code Playgroud)

sqlite join relationships node.js sequelize.js

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