【问题标题】:Laravel: seeding tables other than UsersLaravel:播种用户以外的表
【发布时间】:2014-12-22 14:02:50
【问题描述】:

更新:我将包含我的完整文件以替换我拥有的部分视图。 User 表的播种器工作,但 Groups 表的播种器不工作。我确实有 Sentry 生成的那些表,但我只为组创建了一个模型,其中除了类的声明之外什么都没有。不知道还包括什么。

<?php

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Eloquent::unguard();

        //User::create(array('email' => 'foo@bar.com'));

        // $this->call('UserTableSeeder');

        $this->command->info('User table seeded!');
    }
    }


    class UserTableSeeder extends Seeder {

        public function run()
        {
             User::create(array(
                       'username' => 'alvaro',
                       'permissions' =>'{"user":1}'
                       ));

            $this->command->info('User table seeded!');
        }
    }   


    class GroupTableSeeder extends Seeder {

        public function run()
        {
             Group::create(array(
                       'name' => 'usuario',
                       'permissions' =>'{"user":1}'
                       ));

            $this->command->info('Group table seeded!');
        }
    }   

但实际上,我想要的是组表(我在 Sentry 上)。是的,我已经为 Group 创建了模型,如 Group.php,但我不知道如何定义它的内容。有时我在其他场合看到只定义类就足够了,但在这里我不知道,它并不那么容易。

只是做类似的事情

class GroupTableSeeder extends Seeder

不会工作,因为它说这样的类不存在。

【问题讨论】:

  • 您确定先运行 Sentry 迁移吗?命令应该是:php artisan migrate --package=cartalyst/sentry,它将在您的数据库中创建usersgroupsthrottleusers_groups 表。
  • 是的,这些表我都有。我使用 Syntara 运行所有东西,包括哨兵。
  • 如果取消注释包含$this-&gt;call('UserTableSeeder') 的行会怎样?这是否告诉你类也不存在?
  • 是的,当我运行 GroupTableSeeder 并取消注释 $this->call('UserTableSeeder') 也会重复相同的消息
  • 其他地方的一篇帖子说有必要使用命名空间文件,例如: // database/seeds/UserTableSeeder.php

标签: laravel seeding


【解决方案1】:

我唯一需要做的就是创建一个名为 GroupTableSeeder.php 的单独文件

并在其中包含代码。出于某种原因,虽然 UserTableSeeder 可以位于名为 DatabaseSeeder 的文件中并且它可以工作,但它不适用于其他表。

class GroupTableSeeder extends Seeder {

        public function run()
        {
             Group::create(array(
                       'name' => 'basicuser',
                       'permissions' =>'{"user.create" :-1,"user.delete" :-1,"user.view":1,"user.update":-1,"post.create":1}'
                       ));

            $this->command->info('Group table seeded!');
        }
    }   

【讨论】:

  • 没有人会因为您回答自己的问题而对您投反对票。没关系。将来,请尝试为您所做的一切提供代码,包括答案,以便其他人可以看到您如何修复它并从中学习。我在想问题可能是文件夹/类结构问题,但您似乎已经弄清楚了。干得好,继续努力。
  • 我已经包含了代码,和上面的一样,只是它必须放在一个单独的文件中。
  • 回答自己的问题是正确的做法。只是不要忘记接受你自己的答案! (不过你必须等待 48 小时)而且你不能低于 1 个代表;)
猜你喜欢
  • 2016-08-08
  • 2018-03-29
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 2020-02-27
  • 2014-12-08
相关资源
最近更新 更多