在Laravel5中查询生成器的本机SQL

时间:2016-07-29 03:27:57

标签: php sql laravel

我在Laravel 5上有两个表,必须使用查询生成器。我已经有了它的sql但我无法将其转换为Query Builder语法。 SQL是

SELECT COUNT(A.cid)  FROM `A` WHERE A.cid IN (SELECT `id` FROM `B` WHERE `create_user`='$name') AND `access_time` BETWEEN '$start_data' AND '$end_data' 

当我使用

DB::table('A')
        ->join('B', function ($join) {
            $join->on('A.id', '=', 'B.cid');
        })
        ->get();

这样的一些语法,这是错误的,所以我怎样才能将像“IN”这样的原生SQL变成查询生成器,谢谢

2 个答案:

答案 0 :(得分:0)

这是joins in Laravel 5.2的语法:

$result= DB::table('a')
            ->join('b', 'a.id', '=', 'b.cid')
            ->select('a.cid')
            ->where('A.cid', 'like', '%string%') //optional like
            ->get();

答案 1 :(得分:0)

尝试以下查询并查看结果:

let onePromise:Promise<string[]> = getOne();
let twoPromise:Promise<MyObject> = getTwo();

Promise.all<string[] | MyObject>([onePromise, twoPromise])
    .then((values:[string[], MyObject]) => {
        let one:string[] = values[0];
        let two:MyObject = values[1];

        // do stuff
    });

或试试这个

$result= DB::table('a')
            ->select(DB::raw('COUNT(a.cid) as total_cid'))
            ->join('b', 'a.cid', '=', 'b.id')
            ->where('b.create_user', $name)
            ->whereBetween('a.access_time', [$start_data, $end_data])
            ->first();

在您的问题中,您询问了如何使用$result= DB::table('a') ->join('b', 'a.cid', '=', 'b.id') ->where('b.create_user', $name) ->whereBetween('a.access_time', [$start_data, $end_data]) ->count(); IN尝试使用以下内容: -

IN