laravel 5.7 嵌套集

laravel 5.7 nested sets

我尝试使用 Laravel 5.7 和 https://github.com/lazychaser/laravel-nestedset 包为嵌套集播种数组,但总是得到:

数组到字符串的转换错误 当函数到达主节点子节点时。 我正在测试 github 上提供的示例,并且无法在播种时使用数组中的嵌套节点创建树。

$node = Category::create([
    'name' => 'Foo',

    'children' => [
        [
            'name' => 'Bar',

            'children' => [
                [ 'name' => 'Baz' ],
            ],
        ],
    ],
]);

任何人都可以建议我如何为数据库 table 或与 laravel 5.7 一起工作的其他软件包(如 baum)播种吗?

谢谢!

我成功完成了这项工作,所以 laravel 5.7 以下是步骤:

  1. 创建新的 laravel 项目,在 .env 中设置数据库参数:composer create-project laravel/laravel nestedset

  2. 来自嵌套集运行:作曲家需要kalnoy/nestedset

  3. 运行 : php artisan make:model NestedSetModel -m

  4. 将app/NestedSetModel.php代码更改为:

    namespace App;
    use Kalnoy\Nestedset\NodeTrait;
    
    use Illuminate\Database\Eloquent\Model;
    
    class NestedSetModel extends Model
    {
        use NodeTrait;
    }
    
  5. 将database/migrations/xxxx_xx_xx_xxxxxx_create_nested_set_models_table.php更改为:

    use Illuminate\Support\Facades\Schema;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;
    
    class CreateNestedSetModelsTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('nested_set_models', function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->nestedSet();
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('nested_set_models');
        }
    }
    
  6. 运行 : php artisan make:seeder NestedSetTableSeeder

  7. 将database/seeds/NestedSetTableSeeder.php改为

    <?php
    
    use Illuminate\Database\Seeder;
    
    class NestedSetTableSeeder extends Seeder
    {
    
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $node = App\NestedSetModel::create([
                'name' => 'Foo',
                'children' => [
                    [
                        'name' => 'Bar',
                        'children' => [
                            ['name' => 'Baz'],
                        ],
                    ],
                ],
        ]);
      }
    }
    
  8. 运行 : php artisan 迁移

  9. 运行 : php artisan db:seed

您应该能够在您的数据库中正确看到新的 table。

1   Foo 1   6       2018-12-03 16:54:20 2018-12-03 16:54:20
2   Bar 2   5   1   2018-12-03 16:54:20 2018-12-03 16:54:20
3   Baz 3   4   2   2018-12-03 16:54:20 2018-12-03 16:54:20