首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Laravel 5.4中,如何将用户表中的两个外键存储到第二个表中?

在Laravel 5.4中,可以通过使用Eloquent模型和数据库迁移来实现将用户表中的两个外键存储到第二个表中。

首先,需要创建两个相关的数据库表,一个是用户表,另一个是第二个表。可以使用Laravel的数据库迁移来创建这两个表,迁移文件位于database/migrations目录下。

在用户表的迁移文件中,可以使用foreign方法来定义两个外键。例如,假设用户表名为users,第二个表名为second_table,可以在用户表的迁移文件中添加以下代码:

代码语言:txt
复制
Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('second_table_id')->unsigned();
    $table->foreign('second_table_id')->references('id')->on('second_table');
    // 其他用户表字段
    $table->timestamps();
});

这段代码创建了一个名为second_table_id的整型字段,并使用foreign方法定义了该字段与第二个表的id字段之间的外键关系。

接下来,在第二个表的迁移文件中,可以使用foreign方法来定义与用户表的外键关系。例如,假设第二个表的迁移文件名为create_second_table,可以在该文件中添加以下代码:

代码语言:txt
复制
Schema::create('second_table', function (Blueprint $table) {
    $table->increments('id');
    // 其他第二个表字段
    $table->timestamps();
});

Schema::table('second_table', function (Blueprint $table) {
    $table->integer('user_id')->unsigned();
    $table->foreign('user_id')->references('id')->on('users');
});

这段代码创建了一个名为user_id的整型字段,并使用foreign方法定义了该字段与用户表的id字段之间的外键关系。

完成以上步骤后,可以运行数据库迁移命令来创建这两个表:

代码语言:txt
复制
php artisan migrate

这样,用户表中的两个外键就会被存储到第二个表中了。

请注意,以上代码示例中的表名、字段名和其他细节可能需要根据实际情况进行调整。此外,还可以根据具体需求在模型中定义关联关系,以便在应用程序中进行查询和操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel5.1 框架模型一对一关系实现与使用方法实例分析

1 实现一对一关系 1.1 准备工作 首先我们需要创建两张和对应两个模型,第一个模型是用户第二个模型是账号。...'); // 关联 $table- timestamps(); }); } 2 编写关系 首先是账号模型下编写以下代码: public function user(...如果省略了第二个和第三个参数的话 Laravel根据方法名自动填充,会把第二个参数填充成 “user_id” 第三个参数填充 “id”,但是我们现在必须这样写,因为我自定义是user_info_id...如果Laravel自动填充的话是找不到这个 所以我们要手动添加下。...belongsTo第二个参数是 Account这个模型要用’user_info_id’去关联UserInfo模型。

1.4K10

3分钟短文:Laravel 模型一对一关联关系这俩啥区别

因为关联关系第二个,第三个参数,根本没有填写。所以这样对比是不直观。 hasOne 和 belongsTo 最大不同,是哪一方持有关系。...举个例子,比如User,还有一个 Car,为了简化逻辑关系, 我们假设一个user只有一个car。我们car内设计一个 user_id 字段,用于存储 user id 值。...我们 phone 内使用 user_id 存储用户id,定义反向关系,这样写: class Phone extends Model { public function owner() {...return $this->belongsTo('User', 'user_id', 'id'); } } 所以,反向关系无关于原始一对一,或者一对多,因为数据库存储,所以使用这个...写在最后 本文通过几个实例介绍了数据库模型一对一,一对多,以及反向关联关系, 大家记住一点,belongsTo 是根据当前存储,去主表内查找记录,而且是返回一个模型对象,或者null。

2.7K20

Laravel创建数据库结构例子

在这两个方法你都要用到 Laravel schema构建器来创建和修改,要了解更多Schema构建器提供方法,参考其文档。下面让我们先看看创建flights简单示例: <?...create方法接收两个参数,第一个是名,第二个是获取用于定义新Blueprint对象闭包: Schema::create('users', function ($table) { $table...dropIfExists('users'); 通过重命名表 重命名表之前,需要验证该包含迁移文件中有明确名字,而不是Laravel基于惯例分配名字。...否则,约束名将会指向旧数据。...) {table) {table- dropIndex([‘state']); // Drops index ‘geo_state_index' }); 约束 Laravel 还提供了创建约束支持

5.5K21

Laravel5.7 数据库操作迁移实现方法

在这两个方法你都要用到 Laravel Schema 构建器来创建和修改,要了解更多 Schema 构建器提供方法,查看其文档。下面让我们先看看创建 flights 简单示例: <?...'); Schema::dropIfExists('users'); 通过重命名表 重命名表之前,需要验证该包含迁移文件中有明确名字,而不是 Laravel 基于惯例分配名字。...否则,约束名将会指向旧数据。...(‘geo_location_spatialindex’); 从 “geo” 删除空间索引(不支持SQLite) 如果要传递数据列数组删除索引方法,那么相应索引名称将会通过数据名、列和类型来自动生成...Laravel 还提供了创建约束支持,用于在数据库层面强制引用完整性。

3.7K31

浅谈laravel5.5 belongsToMany自身正确用法

场景 用户之间相互关注,记录这种关系是followers(follower_id 发起关注的人 followed_id被关注的人) 现在多对多关系就不再是传统三张关系了, 这种情况 多对多关系应该怎么声明呢...分析 laravel或者其他框架多对多关系 一般都是由Model1 Model2 Model1_Model2(声明两者关系)来组成, 但是上面的场景 却是只有两张,这时候就要研究下官方文档了...以达到个性化需求, 第一个参数是 第二个Model 第二个参数是 关系名 第三个参数是 第一个Model关系ID 第四个参数是 第二个Model关系ID 解决...关系名是 ‘followers’ /** * 关注当前用户 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany...'followers', 'followed_id','follower_id')- withTimestamps() - withTimestamps(); } /** * 被当前用户关注用户

1.3K31

Laravel 通过迁移文件定义数据结构

在对数据库进行操作之前,需要先创建数据诸如 Laravel 这种现代框架,通过代码驱动让数据结构定义变得非常简单。...此外,这个 Artisan 命令还支持两个可选选项,--create= 用于指定要创建数据名称,以及 --table= 用于指定要修改数据名称,前者定义创建数据迁移文件时使用,后者定义更新数据迁移文件时使用...创建新字段 接下来,我们看一下如何为创建数据添加字段,前面我们已经说了,这个操作 Schema::ceate 方法第二个参数闭包函数完成: Schema::create('users', function...迁移类,如果我们想建立文章 user_id 字段与用户 id 之间关联关系,可以通过这种方式来定义索引来实现: $table->foreign('user_id')->references...('id')->on('users'); 如果你还想进一步指定约束(级联删除和更新,比如我们删除了 users 某个 id 对应记录,那么其文章对应 user_id 所有文章会被删除

2.1K21

PostgreSQL 教程

左连接 从一个中选择行,这些行在其他可能有也可能没有对应行。 自连接 通过将与自身进行比较来将与其自身连接。 完全连接 使用完全连接查找一个另一个没有匹配行行。...EXCEPT 返回第一个查询未出现在第二个查询输出行。 第 6 节. 分组集、多维分组和汇总 主题 描述 分组集 报告中生成多个分组集。...删除 删除现有及其所有依赖对象。 截断 快速有效地删除大所有数据。 临时 向您展示如何使用临时。 复制表 向您展示如何将表格复制新表格。 第 13 节....了解 PostgreSQL 约束 主题 描述 主键 说明创建或向现有添加主键时如何定义主键。 展示如何在创建新时定义约束或为现有添加约束。...hstore 向您介绍数据类型,它是存储 PostgreSQL 单个值一组/值对。 JSON 说明如何使用 JSON 数据类型,并向您展示如何使用一些最重要 JSON 运算符和函数。

48110

Laravel5.1 框架关联模型之后操作实例分析

会自动为我们填充中间关联属性, 多对多save方法是允许我们传入第二个参数。...$tag- posts()- save($post, ['expires' = true]); } 1.3 使用Create方法 Create方法是一种批量填充模式 所以记得Model设置白/...而且使用时要用下方模型 调用dissociate方法,将下方模型从上方模型关联移除。此外此方法执行后会将下方模型id至为0。...$post- tags()- attach(2); $post- save(); } 当追加关系时同样也可以将一个中间数据加入第二个参数,以此更新中间其他列。...$tag- posts()- sync([2, 4, 5]); } 注意:sync方法也可以传入第二个参数,也是数组类型 以便更新中间其他列。由于语法跟前面几个方法一样,就不在重复写了。

1.9K20

两个非常棒 Laravel 权限管理包推荐

这里我有两个推荐。 为什么需要包? 追本遡源 —— Laravel 官方权限功能支持 5.1.11 版引入之后就几乎没变过。...安装和使用 两个安装类似: 添加到 composer 安装; config/app.php 添加一个提供器和 facade (Bouncer); 发布和运行迁移; 在用户模型引入指定 trait...这两个包都已经假设你已经有一个默认 Laravel 用户数据库,但没有任何角色和权限结构。 它们会添加自己和字段。 这两个包都在 README 上有非常清晰文档来描述各自用法。...所以没有直接关联 users ,也没有其他有 user_id 字段。...然后,permissions 是附加到 entity 一组功能; Entity (在所有)是分配权限对象。它可能是角色或用户

4.1K30

Laravel Eloquent 模型关联关系(下)

: 如果你想进一步过滤出文章标题和评论都包含「Laravel学院」用户,可以在上述闭包函数通过查询构建器进一步指定: $users = User::whereHas('posts', function...注:实际开发为了提高查询性能,我们往往是 posts 冗余提供一个 comments_count 字段,每新增一条评论,该字段值加 1,查询时候直接取该字段即可,从而提高查询性能。...>orderBy('created_at', 'desc'); }]); 关联插入与更新 一对多关联记录插入 新增关联模型时候,可以父模型上调用相应方法直接插入记录到数据库,这样做好处是不需要指定关联模型与父模型关联字段值...如果是要更新新创建模型实例所属模型(父模型)字段,比如以 posts 为例,新增记录想要更新 user_id 字段,可以这么实现: $user = User::findOrFail(1);...空对象模型 如果字段 user_id 允许为空的话,当我们访问 Post 模型上 author 属性时,默认返回为 null。

19.5K30

Laravel 模型关联基础教程详解

Laravel 定义模型关联是每个 Laravel 开发者可能已经做过不止一次事情。但是试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样关联,你应该选择哪一个?...当涉及查询模型时,我们如何充分利用模型关联功能? Laravel 模型关联可能会让人糊涂。...我们通过 hasOne 方法告诉 Laravel User 模型有一个 Passport 。 注意: 所有用于定义关联方法都有可选额外参数,你可以在这些参数定义本地。...用户可以拥有多个账单,但账单仅属于一个用户代码是这样写: <?...你可以通过创建迁移文件 Laravel 创建此中间。 远程关联 远程一对一 has one through 关联通过单个中间关联模型实现。

5.5K31

Laravel系列4.3】模型Eloquent ORM使用(一)

英文命名,复数一般都会加 s ,所以,如果是走自动映射表名的话,会在大驼峰转换之后再加一个 s 名后面。 好吧,原来如此,但是这样我们就用不了这个了?...如果你中有这两个字段的话,那么 Model 操作过程,你可以忽略这两个字段操作,Model 系统会自动设置它们。...标准数据库结构,我们是有主外概念,但是,说实话, MySQL 中使用主外情况还真的是非常少。之前似乎有印象说 MySQL 不是很推荐通过主外来建立之间联系。...之所以要有这个东西,主要也是为了数据之前能够在数据库层面保持一定关联,这样我们就可以做一些特殊操作,比如说定义数据库事件或者定时任务之类,或者关联删除时候能够更加有效率。...这样做原因也正是为了保持数据一致性和完整性。 当然, Laravel ,可以不在数据库层面进行严格设置,就可以框架代码实现主外关联。

8.8K20

Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解

这个时候,我们会想,如何将model某些字段隐藏起来,不输出到JSON。另外一种情况,比如字段是password等一些敏感信息时候,我们不希望JSON数据里包含这样敏感信息。...要解决这个问题,我们可以model里定义hidden或者visible这两个数组来进行字段隐藏或者显示: <?...address | 字段类型我就不赘述了,其中country_id、province_id以及city_id这三个分别对应了国家、省份以及城市id。...而Customer对应customers,会有shipping_address_id这个键指向shipping_addressesid。...$this- shippingAddress- address, ]; } 注意,无论是fullName还是fullShippingAddress,都是不存在于customers字段

4.4K30

Laravel系列4.2】查询构造器

Laravel ,默认情况下这个值设置就是 PDO::FETCH_OBJ 。关于如何修改成 PDO::FETCH_ASSOC ,我们会在后面的文章中学习。...我们又发现了一个设计模式 Laravel 框架应用,意外不意外,惊喜不惊喜! 连查询 普通查询使用还是非常简单,我也就不多说了,下面的代码也有演示。...一般查询,我们只需要一个相对应即可,但是实际业务开发,还会有遇到多个相对应情况,这个才是我们接下来说重点问题。...`sex` }); 代码第一段查询就是最普通一个查询,如果要实现多个的话,就需要使用第二种方法。...它是 join() 或者 leftJoin() 这些 join 相关函数都支持一种形式,把第二个参数变成一个回调参数,然后在里面继续使用 on() 方法来进行多个条件连接。

16.8K10

Laravel学习记录--Model

(这里没有复数形式) foreignPivotKey:当前模型中间字段(当前模型类) 如不指定,默认拼接规则为 名_id,这里为stu_id relatedPivotKey:另一模型中间字段...,本例按照默认拼接规则为 当前模型类名_id;这里就是(Countrie_id)secondKey:中间模型类与关联模型类关联,如果不指定,本例按照默认拼接规则为关联模型类_id;这里就为...单看这句话有点云里雾里 举个例子,一个场景你系统用户可以对文章和视频评论,使用多态关联,你只需用一个评论(comments)即可同时满足存储视频,文章评论。...要建立这种多态管理,需要设置图片结构以及用户与文章关联,图片要额外添加两个字段,1,类型字段(table_type)保存所属模型类名。...,如用户信息评论(可能例子不恰当,反正体先多态关联)这两种评论结构是一样,没接触这个之前我们可能会创建两种评论分别存储文章评论和用户信息评论,但多态关联解决了这一问题,我们只需一张评论,利用这张存储两种评论

13.4K20

laravel - 根据数据库逆向生成迁移文件

(亲测支持前缀),然后使用composer安装库 composer require kitloong/laravel-migrations-generator 之后使用laravelartisan就可以逆向生成迁移文件了...视图和将在 +1秒内创建....,默认为: [datetime]\_create_[name]_proc.php --fk-filename[=FK-FILENAME] 自定义迁移文件名,默认为: [datetime]\_add_foreign_keys_to...不使用数据库进行迁移 --use-db-collation 使用现有数据库排序规则生成迁移 --skip-log 不写入迁移日志 --skip-views 跳过视图 --skip-proc 跳过存储过程...--squash 将所有迁移文件合并至一个文件 --with-has-table 使用 hasTable 检查是否存在 结尾 这样我们就以一个非常优美的姿势逆向生成出了所有的迁移文件

1.5K50

Laravel5.2之Seeder填充数据小技巧

说明:本文主要聊一聊Laravel测试数据填充器Seeder小技巧,同时介绍下Laravel开发插件三件套,这三个插件挺好用哦。同时,会将开发过程一些截图和代码黏上去,提高阅读效率。...mpociot/laravel-test-factory-helper --dev 然后config/app.php文件填上: /** *Develop Plugin...* * @return void */ public function down() { //删除时要删除外约束,参数为键名称...Tag是多对多关系,还需要一张存放两者关系: //多对多关系,中间命名laravel默认按照两张表字母排序来,写成tag_post会找不到中间 php artisan make:migration...关系如下: Seeder填充测试数据 好,聊到seeder测试数据填充之前,看下开发插件三件套能干些啥,下文中命令可在项目根目录输入php artisan指令列表查看。

3.5K42
领券