显示类别名称

时间:2019-10-13 20:49:35

标签: php laravel

enter image description here enter image description here

我使用yajrabox,我需要在产品页面中显示类别名称,而不是类别ID 我在数据库表中添加类别ID

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 :(得分:0)

category_id只是产品表/模型上的一列/属性,基本上是整数,您需要从belongsTo关系中访问类别名称

确保category_id是一个外键,它引用了products表迁移中的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();
}

希望这会有所帮助