繁体   English   中英

Laravel Backpack - 内联创建,未在 DB 上添加关系

[英]Laravel Backpack - Inline create, relationship not being added on DB

我正在尝试 4.1 新功能“内联创建”,但我似乎无法关联所创建项目的 ID。 让我解释一下我在做什么/我想要什么:

我有里面有“章节”的“文件夹”(所以 1-n 关系)。

我的代码:

    CRUD::addField([  //Folder crud
            'name' => 'chapters', 
            'type' => 'relationship',
            'label' => 'Unidad',
            'model' => "App\Models\Chapter",
            'inline_create' => [
                'entity' => 'chapter',
                'modal_class' => 'modal-dialog modal-xl',
                'modal_route' => route('chapter-inline-create'),
                'create_route' =>  route('chapter-inline-create-save'),
            ]
        ]);

    protected function setupCreateOperation() //Chapter crud
    {
        CRUD::setValidation(ChapterRequest::class);

        CRUD::addField([
            'name' => 'name', 
            'type' => 'text', 
            'label' => 'Nombre'
        ]);
    }

    public function chapters() //Folder model
    {
        return $this->hasMany(Chapter::class);
    }

    public function folder() //Chapter model
    {
        return $this->belongsTo(Folder::class);
    }

它创建主要项目和相关项目没有问题,但它实际上并没有在任何时候将它们关联到数据库中。

关于我可能做错了什么的任何线索? 按照文档进行操作,但似乎无法正常工作。

谢谢你。

你在数据库中有正确的列名吗? 使关系成为可能的列,即在文件夹表中,您应该有一个名为 chapter_name 或 chapter_id 的列,以标识文件夹所属的章节。

此外,如果这些列不遵循 laravel 约定,则需要在模型中实现关系时将它们添加为第二个和第三个参数

更多细节在这里https://laravel.com/docs/8.x/eloquent-relationships#one-to-many

关于这个的一个注意事项......我遇到了这个问题并意识到我忘记让我的孩子 model 的parent_id可填写。

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
  'parent_id',
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM