Атрибуты пользовательских отношений Laravel Voyager не работают

Я использую Laravel v:9.52.16 на PHP 8.1.0.

Согласно документации атрибутов пользовательских отношений Laravel Voyager:

Предположим, у меня есть модель PlatformCategory и связанная с ней таблица в базе данных содержит столбцы f_name и l_name. Мне нужно отображать полное имя связанных моделей на панели администратора Voyager PlatformCategory, используя пользовательские атрибуты отношений.

Я пробовал следующее:

public $additional_attributes   = ['full_name'];
public function getFullNameReadAttribute()
{
    return "{$this->f_name} {$this->_name}";
}

Однако это приводит к следующей ошибке:

QueryException
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'full_name' in 'field list'
SELECT `full_name`, `id` FROM `platform_categories` WHERE 0 = 1 AND `platform_categories`.`deleted_at` IS NULL
The error message indicates that the database query is attempting to select a column called full_name, but it doesn't exist in the platform_categories table.

Как я могу исправить эту проблему и отобразить полное имя модели PlatformCategory в панели администратора Voyager?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

решением было отредактировать этот файл:

tcg\voyager\resources\views\formfeilds\relationship.blade.php:

внутри этого блока кода:

 @php
                        $selected_keys = [];

                        if (!is_null($dataTypeContent->getKey())) {
                            $selected_keys = $dataTypeContent->belongsToMany(
                                $options->model,
                                $options->pivot_table,
                                $options->foreign_pivot_key ?? null,
                                $options->related_pivot_key ?? null,
                                $options->parent_key ?? null,
                                $options->key
                            )->pluck($options->table.'.'.$options->key);
                        }
                        $selected_keys = old($relationshipField, $selected_keys);
                        $selected_values = app($options->model)->whereIn($options->key, $selected_keys)->pluck($options->label, $options->key);
                    @endphp

нам нужно изменить

$selected_values = app($options->model)->whereIn($options->key, $selected_keys)->pluck($options->label, $options->key);

к :

$selected_values = app($options->model)->whereIn($options->key, $selected_keys)->get()->pluck($options->label, $options->key);

Другие вопросы по теме