首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从两个有条件的表中选择yajra

问从两个有条件的表中选择yajra
EN

Stack Overflow用户
提问于 2020-08-08 17:01:24
回答 1查看 811关注 0票数 0

我使用的是雅伊拉 datatable包,我有一些订单表,有:

  • orders:id,order_code,期限,状态.
  • order_products (从可用产品存储订单):id,order_id(来自orders的参考),product_id,类型,价格,created_at。
  • order_vps_custom (从定制产品存储订单):id,order_id(来自orders的引用),软件包,ram,cpu,created_at。

有2起案件:

案例1:如果用户从可用产品中选择 我将order_code等存储在orders表中作为父表,然后插入到表表中作为orders case 2的子表:如果用户自定义vps命令 我将order_code等存储到orders表中作为父表,然后插入到表orders的子表中。

而且,我也不知道如何在页面上添加预期的输出,如以下所示:

VPS / REGIESTERED AT _ STATUS

同一表上的order_packages和order_vps_custom

我试过在控制器上用这个:

代码语言:javascript
复制
$model = Order::with(['order_products','vps_custom'])->get();
    
$dTable = DataTables()->of($model)->addIndexColumn()
             ->editColumn('vps',function($data){
                 return $data->vps->package;
               })

订单(模式):

代码语言:javascript
复制
public function order_products()
{
    return $this->hasMany(OrderProduct::class,'order_id','id');
}

public function vps_custom()
{
    return $this->hasMany(OrderVpsCustom::class,'order_id','id');
}

下面是我的结果数组:

​

​

有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2020-08-08 17:31:39

这是解决了,但没有急切加载和使用左连接,如果有人可以帮助我更改为热切加载请回答

代码语言:javascript
复制
 $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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63318063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档