我使用yajrabox
,我需要在产品页面中显示类别名称,而不是类别ID
我在数据库表中添加类别ID
//控制器
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' },
]
});
});
答案 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();
}
希望这会有所帮助