Отношения в Laravel Backpack - Не уверен, что понимаю - PullRequest
1 голос
/ 23 декабря 2019

Я установил рюкзак на последнюю версию Laravel 6.

После запуска этой команды в качестве теста:

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

Команда создала модель Post в Models / Post

Я хотел бы видеть имена пользователей из таблицы "user" в моем "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

Моя проблема "Я думаю" связана с "entity" => backpackuser ",

Из того, что я понимаю, мне нужно добавить отношениеметод здесь, но я не понимаю, что Backpack не создал его при запуске первой команды, это нормально?

Кроме того, какую модель я должен использовать, чтобы передать пользовательские данные в поле выбора? Приложение / Пользователь или Приложение / Модели / BackpackUser?

Спасибо.

1 Ответ

0 голосов
/ 23 декабря 2019

Да, вы должны создать отношение вручную и добавить его в модель Post.

В этом случае (см. Пользователи в публикациях CRUD) вам нужно добавить метод отношения в Post, а не User.

...