Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 4 Laravel查询生成器动态嵌套where/orWhere_Laravel 4 - Fatal编程技术网

Laravel 4 Laravel查询生成器动态嵌套where/orWhere

Laravel 4 Laravel查询生成器动态嵌套where/orWhere,laravel-4,Laravel 4,我希望有人能帮我指引正确的方向。我是拉威尔的新手,远不是最好的php程序员。我试图构建动态嵌套的where/orWhere子句,我被卡住了,我的意思是我无法理解它。到目前为止,我掌握的代码是: public static function runNested($rId, $current_id) { $insidestuff = DB::table('tableName') ->select('all fields necessary') ...

我希望有人能帮我指引正确的方向。我是拉威尔的新手,远不是最好的php程序员。我试图构建动态嵌套的where/orWhere子句,我被卡住了,我的意思是我无法理解它。到目前为止,我掌握的代码是:

public static function runNested($rId, $current_id) {

    $insidestuff = DB::table('tableName')
        ->select('all fields necessary')
        ...
        ->get();

            $count=1;
            foreach ($insidestuff as $inside)
            {
                $var1 = $inside->var1;
                $var2 = $inside->var2;
                $var3 = $inside->var3;
                $var4 = $inside->var4;

                if ($count == 1)
                {
                    $outsideMet = $outsideMet->where(function($query) use ($var1, $var2, $var3, $var4, $id)
                    {
                        $query->where($var1, $var2, $var3);
                        $outsideMet = myClass::runNested($var4, $id);
                    });
                } else {
                    $outsideMet = $outsideMet->orWhere(function($query) use ($var1, $var2, $var3, $var4, $id)
                    {
                        $query->where($var1, $var2, $var3);
                        $outsideMet = myClass::runNested($var4, $id);
                    }); 
                }
                $count++;

            }
}

public static function runOutside($rId) {

    $outsideQuery = DB::table('tableName')
        ->select('all necessary fields')
        ->get();

    $outsideMet = dbTable::select('*');
    $outsideMet = $outsideMet->leftJoin('necessary fields');

    $outsideCount=1;
    foreach ($oursideQuery as $oQuery)
    {
            $oVar1 = $oQuery->oVar1;
            $oVar2 = $oQuery->oVar2;
            $oVar3 = $oQuery->oVar3;
            $oVar4 = $oVar4;
            $oVar5 = $oQuery->oVar5;

                if ($outsideCount == 1)
                {
                    $outsideMet = $outsideMet->where(function($query) use ($oVar1, $oVar2, $oVar3, $oVar4, $oVar5)
                    {
                        $query->where($oVar1, $oVar2, $oVar3);
                        $outsideMet = myClass::runNested($oVar4, $oVar5);
                    });

                } else {
                    $outsideMet = $outsideMet->orWhere(function($query) use ($oVar1, $oVar2, $oVar3, $oVar4, $oVar5)
                    {
                        $query->where($oVar1, $oVar2, $oVar3);
                        $outsideMet = myClass::runNested($oVar4, $oVar5);
                    });                 
                }
                $outsideCount++;
        }

    $outsideMet = $outsideMet->count();

我希望有人能告诉我如何正确地做到这一点,如果上面的代码很接近,我做错了什么。提前感谢您的帮助和指导。

。在
runOutside
功能的
foreach
循环中有一个输入错误
$oursideQuery
而不是
$outsideQuery
。不幸的是,打字错误不是问题所在。我认为上面的语法不正确,特别是花括号和嵌套函数之间传递的变量命名。我希望有人能帮助我朝着正确的方向前进。