从SQL查询中制作Query Builder

时间:2018-05-31 01:18:02

标签: laravel-5 laravel-query-builder

我的目标是在Order db上创建一个搜索,但其中一些有关系。

是否可以为此SQL查询创建查询构建器:

var test_data = data.split(/\r?\n|\r/);
var table_data = '<table>';
var count = 0;

for (var i = 0; i < test_data.length; i++) {
    var cell_data = test_data[i].split(",");
    table_data += '<tr>';
    for (var j = 0; j < cell_data.length - 1; j++) {
        if(i === 0) {
            table_data += '<th colspan="4">' + cell_data[j] + ":" + cell_data[j + 1] + '</th>';
        } else {
            table_data += '<td>' + cell_data[j] + ":" + cell_data[j + 1] + '</td>';
        }
    }
    alert(count);
    if (count == 3) {
        table_data += '</tr>';
        count = 0;
    } else {
        count += 1;
    }

    //table_data += '</tr>'
}
table_data += '</table>';
$('#loadData').html(table_data);

现在,我猜测每个条件都使用SELECT * FROM `order` AS a JOIN `users` AS b ON b.id = a.user_id WHERE LPAD(a.id,6,'0') LIKE '%keyword%' OR b.name LIKE '%keyword%' OR a.order_detail LIKE '%keyword%' ,如:

orWhere

1 个答案:

答案 0 :(得分:1)

试试这个:

Order::where(DB::raw("LPAD(id, 6, '0')"), 'LIKE', '%'. $keyword .'%')
    ->orWhere('order_detail', 'LIKE', '%'. $keyword .'%')
    ->orWhereHas('user', function ($query) use ($keyword) {
         $query->where('name', 'LIKE', '%'. $keyword .'%');
    })->get();