отображаемое имя категории на основе родительского идентификатора из той же таблицы Laravel Vuejs - PullRequest
0 голосов
/ 01 мая 2020

У меня есть таблица mysql с именем "category", которая содержит category_id parent_id имя_каталога и т. Д. c .. Я хочу отобразить имя parent_id из той же таблицы, как я могу сделать это в моем файле vue с возможностью обработки данных ?

1 Ответ

0 голосов
/ 02 мая 2020

Это может быть достигнуто несколькими способами.

РЕШЕНИЕ 1:

Самое простое, о чем я могу думать, это создать отношения на модели Category, например:

class Category extends Model
{
    protected $table = 'Category';

    protected $primaryKey = 'category_id';

    public function parent()
    {
        return $this->belongsTo(static::class, 'parent_id', 'category_id')
    }
}

Затем от контроллера:

use App\Category;

class CategoriesController extends Controller
{
    public function index()
    {
        return Category::with('parent')->get();
    }
}

Тогда ваш JSON ответ будет примерно таким:

[
    {
        category_id,
        parent_id,
        category_name,
        parent: {
            category_id,
            parent_id,
            category_name,   
        }
    },
    {
        category_id,
        parent_id,
        category_name,
        parent: {
            category_id,
            parent_id,
            category_name,

        }

    }
]

// from the front-end you can access the parent name by:
category.parent.category_name

РЕШЕНИЕ 2:

Более эффективный подход может быть добавление подзапроса , например:

class CategoriesController extends Controller
{
    public function index()
    {
        Category::addSelect('parent_name' => DB::table('category as parent'))
            ->select('parent.category_name')
            ->whereColumn('parent.category_id', 'category.category_id')
            ->limit(1)
    }->get();
}

Тогда ваш JSON ответ будет выглядеть примерно так:

[
    {
        category_id,
        parent_id,
        category_name,
        parent_name
    },
    {
        category_id,
        parent_id,
        category_name,
        parent_name
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...