1

我有一个想要移植到 Laravel 的应用程序。

它已经有数据,所以我需要使用迁移和播种来移植和设置数据库数据。

在我的应用程序中,我有 Tablefoo和 Table bar。Table 中的字段是 Tablebar中字段的外键foo

当我播种时,插入的 id 很可能与旧应用程序不同。

那么问题是外键字段的完整性会受到损害,因为 id 会不同。

有什么策略可以解决这个问题吗?我不介意更改外键字段的值,只要它指向正确的行。

4

2 回答 2

1

不依赖于语言或框架、Laravel、Rails ......逻辑保持不变。

select你必须在桌子上做一些聪明的事情bar才能链接foobar.

因此,在Laravel上下文中,您打开FooTableSeeder.php并编写如下内容:

$bar1 = Bar::where( ---your condition---)->first();
$bar2 = Bar::where( ---your condition---)->first();

DB::table('foo')->truncate();

$foogees = array(
  array( 'bar_id' => $bar1->id ...),
  array( 'bar_id' => $bar1->id ...),
  array( 'bar_id' => $bar2->id ...),
  ...
);

DB::table('foo')->insert($foogees);
于 2017-04-06T17:38:43.440 回答
0

我也有类似的情况。我的解决方案是手动输入fooid。它对我来说效果很好。

通常,我不建议为表设置主键,但由于您要移植它,我认为这是可以接受的情况之一。

于 2015-01-23T22:07:23.090 回答