如何在 Laravel 5.3 的迁移表中使用计数器?

3

我的代码像这样:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\Models\Akun;
use App\Models\Master_lookup;

class MasterLookupsTableSeeder extends Seeder
{
    public function run()
    {
        foreach (Akun::all() as $key => $value) {
            $masterLookup = new Master_lookup;
            $masterLookup->id           = ++$key
            $masterLookup->parent_id    = NULL;
            $masterLookup->code         = $value->kdakun;
            $masterLookup->name         = $value->nmakun;
            $masterLookup->type         = 'akun';
            $masterLookup->information  = json_encode($value->kdjenbel);
            $masterLookup->save(); 
        }
    }
}

我使用索引$key来计数。

但是执行时会出现错误:

[Symfony\Component\Debug\Exception\FatalThrowableError]
  Parse error: syntax error, unexpected '$masterLookup' (T_VARIABLE)

有没有人可以帮助我?

这句话与IT技术无关。
2个回答

3

不要手动添加 id。ID 应该是 AUTO INCREMENT,这样数据库就可以自动增加它了。在迁移中定义 id 应该像这样:

$table->increments('id');

更新

如果出于某些原因不想使用 increments(),可以使用以下方法:

$masterLookup->id = $key;

这应该可以工作,因为你正在遍历Eloquent集合,所以key是唯一的。


存在这样的错误:使用未定义的常量key - 假定为'key' - moses toh
请使用 $key,我不小心删除了 $ 符号。 - Alexey Mezenin
这看起来是正确的,$masterLookup->id = ++$key; 从1开始排序,而不是0。我的答案只少了一个; - moses toh

0
在你的代码中,你没有在行末添加分号。 $masterLookup->id = ++$key; 请在行末使用分号 (;)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接