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

约定:我应该把hasOne和belongsTo放在哪个模型上

商冠玉
2023-03-14

我在Laravel应用程序中有两个模型,联系人和地址彼此相关。

联系人字段:[id,姓名]地址字段:[id,地址,联系人id]

在联系人模型中,我添加了:

public function address(){
    return $this->hasOne(Address::class);
}

在地址模型中,我添加了:

public function contact(){
    return $this->belongsTo(Contact::class);
}

我想知道在函数上交换hasOne和belongsTo是可以的,还是会违反现有的任何约定。

如下联系人字段:[id,name,address\u id]地址字段:[id,address]

我这样问的原因是因为我想创建一个工厂来创建相关表上的数据。

因此,我想生成其他相关联系人表(如地址、角色等)的种子,并在创建过程中获取id。

$factory->define(App\Contact::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'address_id' => factory(App\Address::class)->create()->id,
        'other_detail_id' => factory(App\OtherDetail::class)->create()->id
    ];
});

共有1个答案

索令
2023-03-14

首先,您仍然可以使用当前实现的工厂创建种子。

$contacts = factory(App\Contact::class, 100)
->create()
->each(function($contact){
    $contact->address()->save(factory(App\Address::class)->make());
}

代码将放置在您的seeder中,您将为这两个联系人定义工厂

 类似资料:
  • 让我在这里展示Laravel文档中的场景:相关的数据库表是、和。表名是不言而喻的。 然后定义关系的逆: 模型: 然后它说:

  • 在Vaadin 10-14中,我应该将静态文件放在哪里,例如CSS、JavaScript和聚合模板?静态文件(如图像)如何? 此外,如何在Vaadin中导入这些文件?Vaadin 14与npm和Vaadin 10-13与bower之间有差异吗?

  • 我搜索了很多,几乎所有我发现的例子都使用了控制器中的异常处理和自己的异常处理程序。我一直认为这应该在程序的服务层上完成。如果不是,我真的不明白为什么要创建单独的服务层。 另外,如果我在Controller中实现异常处理,是否意味着我必须在前面的所有层中抛出异常?

  • 以下是在不使用聚合物的情况下运行良好的测试代码: 但我希望在聚合物元素中使用Javascript,并尝试了以下插入: NR 1:脚本标记内的Javascript,模板标记后的Javascript: 我想这意味着,编译器看不到按钮id,因为它在阴影中? 请指示我。

  • 问题内容: 我正在使用sequelize ORM 开发sails.js应用程序。对于何时需要使用BelongsTo和HasOne,我有些困惑。 该文档指出: BelongsTo 关联是源模型上存在一对一关系的外键的关联。 HasOne 关联是目标模型上存在一对一关系的外键的关联。 除了指定位置以外,还有其他区别吗?在这两种情况下,行为是否仍保持相同? 问题答案: 这是更普遍的问题。 主要区别在于语

  • 我正在尝试为没有它们的包装提供类型: 我在带有打字稿 2.4.2 的 webpack 中使用 ts-loader,并且在 tsconfig.json 中设置了以下类型根: 我试图模仿: < code>index.d.ts中包含以下内容: 但是错误仍然存在。我做错了什么?我应该把那些自定义的. d.ts文件放在哪里? 和任何其他类型根之间有什么区别?为什么TypeScript会区别对待它们?