当前位置: 首页 > 知识库问答 >
问题:

指向唯一约束的Laravel关系外键

闾丘淇
2023-03-14

用户表:

id    int primary key, auto increment
r_id  varchar unique
name  varchar

图书目录:

id       int primary key, auto increment
user_id  foreign key to r_id in users table
name     varchar

用户模型中的关系:

return $this->hasMany('App\Book', 'user_id');

默认情况下,user\u id外键指向主键id。如何使其指向唯一的r\u id

如果只有,r\u id是主键,我们可以用第三个参数传递它,并覆盖$primaryKey属性:

return $this->hasMany('App\Book', 'user_id','r_id');
protected $primaryKey = "r_id";

共有2个答案

楚俊逸
2023-03-14

我认为你的代码需要更新如下:

 return $this->hasMany('App\Book');

希望这对你有用!

阎冠玉
2023-03-14

默认情况下,雄辩的orm期望本地密钥为id。若要覆盖它,可以在关系中传入第三个参数。

https://laravel.com/docs/5.2/eloquent-relationships#one-对许多人来说

$this->hasMany('App\Model', 'foreign_key', 'local_key')

所以,你们的关系可以

return $this->hasMany('App\Book', 'user_id', 'r_id');

更新:

我记得,我最近也遇到过类似的情况。你能试试这个然后把我还给我吗。我将在稍后更新详细的答案。在用户模型和测试中添加以下方法。谢谢

public function getRIdAttribute($value)
{
    return $value;
}
 类似资料:
  • 无法添加或更新子行:外键约束失败(.,约束外键()引用()) 如果我删除,insert操作将会很好地工作。在将对象插入数据库之前,我检查了这些对象,并确保包含,包含。 用于创建和的SQL脚本为: Hibernate:创建表b(b_id integer not null auto_increment,string_results longtext,a_id integer,主键(b_id)) Hib

  • 主要内容:在创建表时设置唯一约束,在修改表时添加唯一约束,删除唯一约束MySQL 唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘0001’,那么该表中就不能出现另一条记录的 id 值也为‘0001’。 唯一约束与主键约束相似的是它们都可以确保列的唯一性。不同的是,唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但

  • 主要内容:Oracle唯一约束语法,Oracle唯一约束例子在本教程中,您将学习如何使用Oracle唯一约束来确保包含在一列或几列中的数据在表中的行之间是唯一的。 Oracle唯一约束语法 一个唯一的约束是一个完整性约束,它确保存储在一列或一组列中的数据在表中的行之间是唯一的。 通常,在使用内联约束语法创建表时,将唯一约束应用于列,如下所示: 此唯一约束指定中的值在整个表中是唯一的。也可以使用外线()约束语法来定义一个唯一的约束: 可以通过使用子句和约束名

  • 当我试图创建第二个表时,我遇到了以下错误,但我不知道为什么。对于表patente,我希望能够将(idfunconario,titulo)作为主键。正如其他主题中所建议的,我已经尝试将唯一约束设置为“唯一(IDFunconario,titulo)”。 消息错误: 错误:没有唯一的约束匹配引用表"public acao"的给定键SQL状态:42830 我在64位的Windows 8.1上使用Postg

  • 问题内容: 我正在将SEAM 2 / Hibernate与PostgreSQL 9数据库一起使用。我有下表 我想添加一个约束,以确保每个新条目都具有active_band_user和active_band_date的唯一组合。 每秒可能有许多次尝试插入,因此我需要尽可能地提高效率,是否可以在实体映射中使用SEAM /hibernate注释? 提前致谢 问题答案: 没有Hibernate注释在插入/

  • 以下两者之间有区别吗: 以及: 在这两种情况下,名称是否唯一?索引唯一时意味着什么? 编辑:Postgres是唯一的约束,而索引没有回答我的问题。它考虑了FK的情况。我的问题与FK无关。我只想知道在这个例子中,这两个操作是否等价,其中不涉及FK。