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

Laravel Eloquent:一个主键中有多个外键

宋博易
2023-03-14

我正在拉维尔创建一个项目。我有两个数据库表,它们是通过迁移创建的:我想在数据库模式中设置多个外键。

  1. 用户
Schema::create('tr_users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email');
            $table->timestamp('email_verified_at')->nullable();
            $table->rememberToken();
            $table->string('password');

            $table->unsignedBigInteger('departement_id')->nullable();
            $table->foreign('departement_id')
                ->references('id_departement')->on('tr_departements')
                ->onUpdate('cascade')
                ->onDelete('cascade');
        });
Schema::create('tr_departements', function (Blueprint $table) {
            $table->bigIncrements('id_departement');
            $table->string('name');
            $table->timestamps();

            $table->unsignedBigInteger('created_by')->nullable();
            $table->foreign('created_by')
                ->references('id')->on('tr_users')
                ->onDelete('cascade');
            $table->unsignedBigInteger('updated_by')->nullable();
            $table->foreign('updated_by')
                ->references('id')->on('tr_users')
                ->onDelete('cascade');
        });

我想知道的是如何描述模型中的关系?

编辑:
我计划使用此关系,每个用户都属于部门,任何部门都有多个用户,每个用户只有一个部门

共有1个答案

袁轶
2023-03-14

如果您正在寻求从用户到部门的一对一关系,那么关系将是这样的:

用户模型中,代码如下所示:

public function department()
{
    return $this->hasOne('App\Department');
}

在你的部门模式中:

public function user()
    {
        return $this->belongsTo('App\User');
    }

有关多重关系,请参阅laravel文档

 类似资料:
  • 问题内容: 我正在开发一个将用作其他应用程序的可扩展框架的应用程序。 基本类之一称为节点,节点具有内容。SQL表如下所示: TABLE节点(NodeId int,....等) 表格NodeContentRelationship(NodeId int,ContentType字符串,ContentId int) 开发人员可以扩展应用程序以创建自己的内容类型。 显然,从关系数据库的角度来看,这很不好,因

  • 问题内容: 为简化起见,我有两个使用外键一对一关联的表,例如: 一个用户可能有很多动作,也可能没有。我需要一个sql select来返回在actions表中没有user_id值的用户id。 所以我需要一个返回用户ID 2(Smith)的SQL查询,因为外键值不包含ID 2 我尝试了以下SQL,但它返回了所有用户ID: 问题答案:

  • 问题内容: 只是为了扩展我以前的问题-我的数据库中有两个表,我想提取某些信息。下表: 您向我提供了以下代码来获取播放器的名称: 效果很好,谢谢-我只想进行两项调整: 我想返回得分手的名字以及球员的名字。由于m.scorer是一个ID,如果p.Name已被映射到m.playerID,我如何将其映射到p.Name属性? 上面的查询返回所有玩家的姓名。我很快就会添加搜索功能,您可以在其中搜索特定玩家的所

  • 问题内容: 我有一张桌子,该桌子应该可以追踪从一家供应商向另一家供应商运送产品的天数和成本。我们(出色地:p)在产品供应商表中存储了运输供应商(FedEx,UPS)和产品处理供应商(Think … Dunder Mifflin)。因此,我的SHIPPING_DETAILS表中有三列,均引用VENDOR.no。由于某种原因,MySQL不允许我将全部三个都定义为外键。有任何想法吗? 编辑删除双主键定义

  • 问题内容: 我正在尝试建立一个PostgreSQL表,该表具有两个指向另一个表中相同主键的外键。 运行脚本时出现错误 sqlalchemy.exc.AmbiguousForeignKeysError:无法确定关系Company.stakeholder的父/子表之间的联接条件- 有多个链接表的外键路径。指定“ foreign_keys”参数,提供这些列的列表,这些列应被视为包含对父表的外键引用。 那

  • 如何使用hibernate注释实现下表? 当前代码为:(为简洁起见,已删除) 使用者 社交网络 SocialProfile公司 显然我的代码现在不能正常工作。有人能解释一下吗?