laravel加入假表

时间:2016-01-04 10:22:35

标签: laravel datatable query-builder

我在Laravel项目中使用带有服务器端处理的数据表。我的状态列是整数,然后格式化

            ->editColumn('status', function($orders) use ($statuses) {
                return $statuses[$orders->status];
            })   

但是这种方法会阻止status列用于搜索。

是否有办法用假表加入查询?像这样的Smth

->join('fake_status_table', 'production_orders.status', '=', 'fake_status_table.id')

起草两个解决方案

解决方案#1

$orders= DB::table('production_orders')
    ->select(DB::raw("DECODE (status_id, 1, 'No started', 
                                        2, 'Running', 
                                        3, 'Done', 
                                        4, 'Defect')"))

解决方案#2

    //create tamporary table
    $status_table = DB::insert( DB::raw( "CREATE TEMPORARY TABLE statuses") );
    $orders = \DB::table('production_requests')
            // join it with drawing table
            ->join('statuses', 'production_requests.status', '=', 'statuses.id')
    // Generate result
    $result = Datatables::of($orders)->make(true);
    // KILL TEMPORARY TABLE
    $dropTable = DB::unprepared( DB::raw( "DROP TEMPORARY TABLE statuses" ) );
    // RETURN RESULT
    return $result;

1 个答案:

答案 0 :(得分:0)

Views只不过是一张临时表......

但它是表本身的副本..你应该根据你的需要创建一个视图..如果你想拥有整个表的视图..那么

CREATE VIEW test.v AS SELECT * FROM t;

甚至

 CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;

然后你应该从控制器返回一些数据并按照datatables

中的惯例构建coloumn

喜欢这个

Jquery:

$(document).ready(function() {
    $('#example').DataTable();
} );

然后前往桌子!!

希望这有助于你