我使用的是雅伊拉 datatable包,我有一些订单表,有:
有2起案件:
案例1:如果用户从可用产品中选择 我将order_code等存储在orders表中作为父表,然后插入到表表中作为orders case 2的子表:如果用户自定义vps命令 我将order_code等存储到orders表中作为父表,然后插入到表orders的子表中。
而且,我也不知道如何在页面上添加预期的输出,如以下所示:
VPS / REGIESTERED AT _ STATUS
同一表上的order_packages和order_vps_custom
我试过在控制器上用这个:
$model = Order::with(['order_products','vps_custom'])->get();
$dTable = DataTables()->of($model)->addIndexColumn()
->editColumn('vps',function($data){
return $data->vps->package;
})订单(模式):
public function order_products()
{
return $this->hasMany(OrderProduct::class,'order_id','id');
}
public function vps_custom()
{
return $this->hasMany(OrderVpsCustom::class,'order_id','id');
}下面是我的结果数组:

有人能帮我吗?
发布于 2020-08-08 17:31:39
这是解决了,但没有急切加载和使用左连接,如果有人可以帮助我更改为热切加载请回答
$model = DB::table('orders')
->select('orders.*','order_products.*','order_vps_customs.*')
->join('order_products','orders.id','=','order_products.order_id','left')
->join('order_vps_customs','orders.id','=','order_vps_customs.order_id','left')
->get();
// dd($model->toArray());
$dTable = DataTables()->of($model)->addIndexColumn()
->editColumn('package',function($data){
$package = $data->product_name;
if (empty($data->product_name))
{
$package = $data->package;
}
return $package;
})
->editColumn('registered_at',function($data){
return date('d, M Y',strtotime($data->created_at));
})
->editColumn('due_date',function($data){
return date('d, M Y', strtotime("+".$data->duration." year",strtotime($data->created_at)));
})
->editColumn('duration',function($data){
return $data->duration." Tahun";
})
->editColumn('total',function($data){
return "-";
})
->editColumn('status',function($data){
$html = '';
if ($data->status == 'pending')
{
$html = '<label class="badge badge-secondary">Pending</label>';
}
else if ($data->status == 'aktif')
{
$html = '<label class="badge badge-success">Aktif</label>';
}
else
{
$html = '<label class="badge badge-warning">Non - Aktif</label>';
}
return $html;
})
->rawColumns(['status']);
return $dTable->make(true);https://stackoverflow.com/questions/63318063
复制相似问题