отображать название категории - PullRequest
0 голосов
/ 13 октября 2019

введите описание изображения здесь enter image description here

Я использую yajrabox, и мне нужно отобразить название категории на странице продукта, а не идентификатор таблицы базы данных категории IЯ добавляю идентификатор категории

enter image description here

// контроллер

protected function getProduct()
{
  return DataTables::of(Product::query())
            ->addColumn('category_name', function(Product $product) {
                    return $product->category_id->category_name;
            })
            ->addColumn('created_at', function(Product $product) {
                return  $product->created_at->diffforhumans();
            })
            ->toJson();
}

// блейд-файл

    $(document).ready( function () {
        $('#myTable').DataTable({
            processing: true,
            serverSide: true,
            ajax: '{!! route('get-products') !!}',
            columns: [
                { data: 'name', name: 'name' },
                { data: 'category_name', name: 'category_name' },
                { data: 'stock', name: 'stock' },
                { data: 'price', name: 'price' },
                { data: 'discount', name: 'discount' },
                { data: 'status', name: 'status' },
                { data: 'created_at', name: 'created_at' },

            ]
        });

    });

1 Ответ

0 голосов
/ 14 октября 2019

category_id - это просто столбец / атрибут в таблице / модели продуктов, который в основном является целым числом, вам необходимо получить доступ к названию категории из отношения belongsTo

. Убедитесь, что category_idвнешний ключ, ссылающийся на идентификатор из таблицы категорий в таблице миграции продуктов

Schema::create('products', function (Blueprint $table) {
  $table->bigIncrements('id');
  $table->string('name');
  $table->string('short-description');
  $table->text('long-description');
  $table->integer('stock');
  $table->decimal('price', 8, 2);
  $table->decimal('discount', 8, 2);
  $table->enum('status', ['available', 'sale']);
  $table->unsignedBigInteger('category_id');
  $table->foreign('category_id')->references('id')->on('categories');
  $table->timestamps();
});

И что у вас есть отношение belongsTo на Product модели

public function category()
{
  return $this->belongsTo('App\Category');
}

Теперь выможет получить доступ к имени с помощью чего-то подобного, в зависимости от того, как вы назвали столбец name в таблице категорий

protected function getProduct()
{
  return DataTables::of(Product::query())
            ->addColumn('category_name', function(Product $product) {
                    return $product->category->category_name;
            })
            ->addColumn('created_at', function(Product $product) {
                return  $product->created_at->diffforhumans();
            })
            ->toJson();
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...