Я использую 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?






решением было отредактировать этот файл:
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);