首页 > 解决方案 > 使用 laravel 插入 Select

问题描述

下午好。我正在尝试将从查询中检索到的数据存储到 MySQL 表中。我正在尝试“插入选择”。但我没有成功。

这是我的控制器

public function getHome()
{
    /* Aqui mando a traer la conexión para hacer mi consulta */
    $home = DB::connection('sqlsrv')->table('v_R_System_valid')->select('v_R_System_valid.Netbios_Name0', 'v_ADD_REMOVE_PROGRAMS.DisplayName0',
        'v_ADD_REMOVE_PROGRAMS.Version0', 'v_ADD_REMOVE_PROGRAMS.InstallDate0')
        ->join('v_ADD_REMOVE_PROGRAMS', 'v_R_System_valid.ResourceID', '=', 'v_ADD_REMOVE_PROGRAMS.ResourceID')
        ->where('v_R_System_valid.Netbios_Name0', '=', 'DMXL3211')->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', '<>', '')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Installer%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%UPDATE%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%MUI%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Tool%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%kit%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%driver%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Microsoft Visual C++%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Runtime%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Outils%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Components%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Libraries%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Framework%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Proof%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Plug-in%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%SDK%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%.NET%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Help%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Service%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Setup%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Pack%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like',  '%GUI%')
        ->where('v_ADD_REMOVE_PROGRAMS.DisplayName0', 'not like', '%Script%')
        ->orderBy('v_R_System_valid.Netbios_Name0', 'ASC')->distinct()->get();

    $auxiliar = 0;
    //$SoftMySQL[] Crear un arreglo
    foreach ($home as $softSQL) {
        //Hacer consulta de este software, y almacenar todo en el arreglo.
        $licencia = DB::connection('mysql')->table('lic')->select('NOMSOFLIC', 'ORDCOMLIC')
            ->where('LIC.NOMSOFLIC', '=', $softSQL->DisplayName0)
            ->where('LIC.EQUIPO', '=', $softSQL->Netbios_Name0)->get();

        if ($licencia->isEmpty() OR ($licencia[0]->ORDCOMLIC=='No hay OC')) {
            $soft = DB::connection('mysql')->table('sof')->select('NOMSOF', 'TIPLICSOF', 'TIPIMASOF', 'PERMITIDO', 'JUEGO')//->get();
            ->where('SOF.NOMSOF', '=', $softSQL->DisplayName0)->get();

            if ($soft->isEmpty() or ($soft[0]->TIPLICSOF == "Licenciado" and $soft[0]->TIPIMASOF == "No estandar")) {


                    $empleado = DB::connection('mysql')->table('EMP')->select('EMP.PUEEMP', 'EMP.IDEEMP', 'EMP.NOMEMP', 'EMP.EMAIL', 'EQU.IDEEQU')
                        ->join('EQU', 'EQU.IDEMP', '=', 'EMP.IDEEMP')
                        ->where('EQU.IDEEQU', $softSQL->Netbios_Name0)
                        ->where('EMP.PUEEMP', 'Empleado')->get();


                    $arraySoftSQL[$auxiliar] = $softSQL;
                    $arrayEmpleado[$auxiliar] = $empleado;
                    $arrayLicencia[$auxiliar] = $licencia;

                    if ($soft->isEmpty())
                        $arraySoft[$auxiliar] = 'No listado';
                    else
                        $arraySoft[$auxiliar] = $soft;

                    if ($licencia->isEmpty())
                        $arrayLicencia[$auxiliar] = 'Sin OC';
                    else
                        $arrayLicencia[$auxiliar] = $licencia;

                    $auxiliar++;
                }
            }

        }

        return view('catalogos.home', [
            'arraySoftSQL' => $arraySoftSQL,
            'arrayEmpleado' => $arrayEmpleado,
            'arraySoft' => $arraySoft,
            'arrayLicencia' => $arrayLicencia,
            'total' => $auxiliar
        ]);

    }

我看到以下代码可以正常工作,但它不起作用

public function copyHome(){
    $select= DB::select('Insert into home','v_R_System_valid.Netbios_Name0', 'v_ADD_REMOVE_PROGRAMS.DisplayName0','v_ADD_REMOVE_PROGRAMS.InstallDate0',
        'SOF.TIPLICSOF', 'SOF.TIPIMASOF','SOF.PERMITIDO', 'SOF.JUEGO','EMP.IDEEMP', 'EMP.NOMEMP','LIC.ORDCOMLIC');

    $bindings = $select->getBindings();
    $insertQuery = 'INSERT into home (Netbios_Name0, DisplayName0,InstallDate0,TIPLICSOF,TIPIMASOF,PERMITIDO,JUEGO,IDEEMP,NOMEMP,ORDCOMLIC)'. $select->toSql();
    DB::insert($insertQuery, $bindings);
}

谁能告诉我,我可以将我获得的数据存储到另一个表中。

标签: htmlmysqlsqllaravel

解决方案


推荐阅读