模型工厂中的 Laravel 5.1 外键

2024-02-09

如何在模型工厂中定义外键。例如,如果我有一个组织表,其中包含国家/地区表的外键,则在我的模型工厂中,我必须为国家/地区 ID 定义一个虚拟值,如下所示:

$factory->define(App\Organisation::class, function ($faker) {
   return [
      'name' => $faker->company,
      'country_id' => 197,
   ];
});

在我的组织表 Seeder 类中,我正在执行以下操作,但 faker 对象不存在 - 我是否需要在我的 Seeder 类中创建一个新的 faker 对象?

use Illuminate\Database\Seeder;

class OrganisationsTableSeeder extends Seeder
{

   public function run()
   {
      $countryIds = Country::lists('id')->all();

      factory('App\Organisation', 3)->create([
        // override factory default
        'country_id' => $faker->randomElement[$countryIds],
    ]);
   }
}

数据库播种器类

class DatabaseSeeder extends Seeder
{
     public function run()
     {

        Model::unguard();

        $this->call('CountriesTableSeeder');
        $this->call('OrganisationsTableSeeder');

        Model::reguard();
     }
}

定义模型工厂时定义外键的最佳方法是什么?是否可以从模型工厂中省略country_id并将其添加到播种器类中 - 从文档看来,您似乎只能覆盖模型工厂中定义的现有值,但无法通过播种器类添加新值 - 正确如果我错了呢?


我可能在这方面有点晚了,但我遇到了同样的问题,这为我解决了它。你应该能够做到

$factory->define(App\Organisation::class, function ($faker) {
    return [
      'name' => $faker->company,
      'country_id' => factory(App\Country::class)->create()->id,
    ];
});

然后在你的种子中你只需要调用

factory(App\Organisation::class, 5)->create();

它也会为你创建国家。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模型工厂中的 Laravel 5.1 外键 的相关文章

  • 如何仅删除父表中由子表中的外键引用的行

    我想从父表中删除行 元组 但它抛出错误消息 因为它的子表中有外键引用 但是 就我而言 我想仅删除父表中的记录并保留子表中的数据 有可能实现这一目标吗 我知道的用法ON DELETE CASCADE https stackoverflow c
  • 外键和索引问题

    我正在使用 SQL Server 2008 Enterprise 我有一个表 其中一个列引用另一个表 在同一个数据库中 中的另一列作为外键 这是相关的SQL语句 更详细地说 表 Foo 中的列 AnotherID 引用了另一个表表 Goo
  • Django 使用 ManytoMany 作为外键

    我正在尝试使用多对多关系作为另一个表的外键 但我不确定这是否可能 考虑以下模型 from django db import models class Attribute models Model name models CharField
  • 为什么外键在 websql 中不起作用..?

    我尝试使用 web sql 在我的应用程序中使用外键 我在 chrome 中测试它 没有错误 但是当我测试手动插入表 img 包含 FK 我预计会失败 但插入仍然成功 这是我的代码 请帮助我 tx executeSql PRAGMA for
  • MySQL 8.x 中的主要错误? -- 外键

    当从 MySQL 用于代码生成器 检索外键信息时 我注意到这种奇怪的行为 它看起来像是 MySQL 8 x 中的一个主要错误 当我使用创建外键时REFERENCES引擎不强制执行它 例如 create table p id int prim
  • 实体框架 - 不同数据上下文中的“导航属性”?

    请注意 有人问了类似的问题 但我觉得没有得到回答 Entity Framework Code First 不同上下文 数据库之间的导航属性 https stackoverflow com questions 14340830 entity
  • Laravel - 如何注册自定义广播者

    我想使用 BroadcastManager 注册自定义广播器 而无需更改内部框架代码 现在我必须在Illuminate Broadcasting BroadcasterManager class protected function cre
  • Hibernate 单向一对多关联 - 为什么连接表更好?

    在本文档中 向下滚动到单向部分 http docs jboss org hibernate stable annotations reference en html single entity mapping association col
  • MySQL 清除表中的重复条目并重新链接依赖表中的 FK

    这是我的情况 我有 2 张桌子 patient and study 每个表都有自己的 PK 使用自动增量 就我而言 pat id 应该是唯一的 它没有在数据库级别声明为唯一 因为它在某些用途中可能不是唯一的 它不是自制系统 我找到了如何配置
  • 在 SQL 数据库中,一对一关系何时应位于同一个表中,何时应位于不同的表中?

    任何人都可以提供一些示例 说明在 SQL 数据库中什么时候在同一个表上保留一对一关系是更好的选择 而什么时候将它们放在单独的表上更有意义 当您有多个实体 它们都必须能够充当另一个实体的外键 并且 几个实体 既有公共属性又有唯一属性 并且您希
  • Laravel Eloquent:计算总价的最佳方法

    我正在使用 Laravel 5 1 构建一个简单的买卖应用程序 每个Buy Model都有很多BuyDetail 里面存储了购买的商品数量和buy price 我已经在模型上实现了表之间的关系 class Buy extends Model
  • mySQL中外键必须是索引吗?

    我刚刚自己创建了第一个 mySQL 表 除了使用 Joomla Wordpress 等 我是 MS SQL 开发人员多年 但通常我可以轻松地在 MS SQL 中创建外键 但我遇到了困难或这里缺乏知识 这是我的表格 users user id
  • SQL DROP TABLE 外键约束

    如果我想像这样删除数据库中的所有表 它会处理外键约束吗 如果没有 我该如何处理 GO IF OBJECT ID dbo Course U IS NOT NULL DROP TABLE dbo Course GO IF OBJECT ID d
  • 事件源和 SQL Server 多个关系表

    我们使用 SQL Server 2016 的事件源 我们有完整的客户产品应用程序 每个应用程序都标记为CustomerId并在事件商店中获取单个指南行项目 这是写入事件存储指南的主要标识符 产品应用程序附带许多不同的关系事物 没有引导 但有
  • 我应该在 laravel 5.1 中将模型保存事件监听器放在哪里

    Laravel 文档说我应该将模型事件放在EventServiceProvider boot 像这样的方法 public function boot DispatcherContract events Raisefund saved fun
  • 错误代码:1822(当数据类型匹配且具有复合键时)

    得到一个 错误代码 1822 添加外键约束失败 丢失的 引用表中约束 subject ibfk 1 的索引 注册 当尝试创建subject桌子 问题是 错误并没有出现在上一张表上student 数据类型相同 并且定义了主键 两者都会出现此错
  • 在 laravel 中禁用特定路由的 csrf

    我有一个支付系统 数据被提交到第三方网站然后被拉回 当数据返回时 它会到达特定的 url 比如 ok 路由 REQUEST transaction 但由于 Laravel 中间件 我遇到了令牌不匹配的情况 第三方支付API无法生成token
  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego
  • 使用 Oracle Sql Developer 生成 DDL 以包含外键

    我尝试了一些使用 SQL Developer 从 Oracle 数据库生成 DDL 的选项 但没有一个符合目的 快速 DDL 选项会产生没有外键约束的 DDL 我很喜欢这种格式 表上的编辑导致 DDL 包括我无法摆脱的存储和日志记录 只是想
  • 仅使用 varchar 作为外键的 MySQL 表

    我有一个包含单个唯一 VARCHAR 512 字段的表 我想让另一个表保存对第一个表的外键引用 两个表都使用 InnoDB 如果我向第二个表添加 VARCHAR 512 键并在其上添加外键约束 512 字节长的数据是否会保存两次 如果是这样

随机推荐