左联接2次原始查询laravel不起作用(Laravel)

时间:2019-11-23 17:08:23

标签: php mysql laravel

我在laravel中尝试了原始查询sql,我需要将其连接2次,但打印出的错误。它不同于mysql。我已经在mysql中尝试过,并且效果很好

这是我的代码:

$tabel = DB::SELECT(DB::RAW("
            SELECT codeh.info_code kh_infocode, codep.no_code khp_nocode, 
            codep.info_code khp_infocode, 
            codep.name_code khp_namecode, t.* FROM transactions t 
            LEFT JOIN users u ON t.user_id=u.id
            LEFT JOIN divisions d ON d.id=u.division_id
            LEFT JOIN all_codes codep ON t.code_p_id=codep.id
            LEFT JOIN all_codes codeh ON t.allcode_id=codeh.id
            WHERE 1=1
            AND d.id=$div_id
            AND codep.no_code LIKE '$allcode->no_code%'
            $db_date
            ORDER BY t.date, khp_nocode
            "));

它在sql中确实很好用,但是当我将其放在laravel中时,kh_infocode的变化和值与khp_infocode相同,即使kh_infocode与khp_infocode的值不同

2 个答案:

答案 0 :(得分:1)

一切都在官方文档中。时间不长,请阅读一下。

DB::table('transactions as t')
->select(
    'codeh.info_code',
    'kh_infocode',
    'codep.no_code',
    'khp_nocode',
    'codep.info_code',
    'khp_infocode',
    'codep.name_code',
    'khp_namecode',
    't.*',
)
->leftJoin('users as u', 't.user_id', '=', 'u.id')
->leftJoin('all_codes as codep', 't.code_p_id', '=', 'codep.id')
->leftJoin('all_codes as codeh', 't.allcode_id', '=', 'codeh.id')
->where('d.id', '=', $div_id)
->where('codep.no_code', 'like', $allcode->no_code.'%')
->orderBy('t.date')
->orderBy('khp_nocode')
->get();

答案 1 :(得分:0)

直接设置SQL字符串,无需DB :: RAW()

$tabel = DB::SELECT('your select statment');