Laravel背包中的关系-不确定我理解

问题描述 投票:0回答:2

我在最新版本的Laravel 6上安装了背包。

在运行此命令作为测试时:

php artisan make:migration:schema create_posts_table --schema="user_id:unsignedInteger:foreign, 
name:string, slug:string, description:text, keywords:string:nullable"

该命令在Models / Post中创建了一个Post模型

我想从我的“发布” CRUD中的“用户”表中看到用户的名称。

第一个问题:我用以下方法生成CRUD:

php artisan backpack:crud post

我看到CRUD,在CRUD的顶部,我想从选择下拉列表的User表中传递用户名。

我尝试过:

protected function setupCreateOperation()
{
$this->crud->setValidation(PostRequest::class);
// TODO: remove setFromDb() and manually define Fields
//$this->crud->setFromDb();
$this->crud->setColumnDetails([
    'label' => 'User', // Table column heading
    'type' => 'select',
    'name' => 'user_id', // the column that contains the ID of that connected entity;
    'entity' => 'backpackuser', // the method that defines the relationship in your Model
    'attribute' => 'name', // foreign key attribute that is shown to user
    'model' => 'App\Models\backpackuser' // foreign key model
    ]);
}

但是我得到了错误:

Symfony\Component\Debug\Exception\FatalThrowableError
Too few arguments to function Backpack\CRUD\app\Library\CrudPanel\CrudPanel::setColumnDetails(), 1 
passed in C:\laragon\www\backpack\app\Http\Controllers\Admin\PostCrudController.php on line 41 and 
exactly 2 expected

我的问题“我认为”与“'实体'=>'backpackuser',”有关

据我了解,我需要在此处添加关联方法,但我不明白的是,背包在运行第一个命令时未创建它,这正常吗?

而且,我应该使用哪种模型将用户详细信息传递到选择字段?App / User或App / Models / BackpackUser?

谢谢。

laravel backpack-for-laravel
2个回答
0
投票
是,您应该手动创建一个关系并将其添加到Post模型中。

© www.soinside.com 2019 - 2024. All rights reserved.