Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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
Php 全局变量不可用于查询laravel eager load中的约束_Php_Laravel_Eloquent_Load_Closures - Fatal编程技术网

Php 全局变量不可用于查询laravel eager load中的约束

Php 全局变量不可用于查询laravel eager load中的约束,php,laravel,eloquent,load,closures,Php,Laravel,Eloquent,Load,Closures,我有一个全局变量需要传递给我的查询: $size = (user input) $name = (user input) $items = Items::with('color')->with(['size' => function ($query){ $query->where('meters', '=', $size); }]) ->where('item_name', '

我有一个全局变量需要传递给我的查询:

$size = (user input)

$name = (user input)

$items = Items::with('color')->with(['size' => function ($query){

                $query->where('meters', '=', $size);
            }])

                ->where('item_name', '=', $name)
                ->get();
这个查询的问题是$color变量在闭包中不可用:我确实需要立即加载数据,而不是连接表,因为我已经定义了视图中使用的变量。
如何将该变量传递给闭包?

只需将其传递给函数即可

$items = Items::with('color')->with(['size' => function ($query, $size) {

            $query->where('meters', '=', $size);
        }])

            ->where('item_name', '=', $text)
            ->get();
怎么样

$size = '(size value)';
$items = Items::with('color')
    ->whereHas('size', function ($query) use ($size) {
        $query->where('meters', $size);
    })
    ->where('item_name', $name)
    ->get();

不起作用,它会引发以下错误:App\Http\Controllers\ItemController::App\Http\Controllers\{closure}()缺少参数2。哦,等等,抱歉,我误读了代码。$color从何而来或定义在何处?不用担心颜色。我在问题中写代码时出错了。我更新了它。我需要将$size传递给closure如果已经定义了大小,那么您可以将它作为第一个答案传递给您的函数。如果它在其他地方被定义为全局,那么你应该声明它是全局的,因为在这个答案中,这个查询的问题是,如果meters不等于$size,它也会返回数据…找不到size列,这个列不会加载sizeWait,“size”是关系还是Items中的列?使用where has时,我从来都不需要为这段感情付出太多。如果您使用Items::where('color','size')?是的,正如我在您的回复中所发布的那样,这是一种关系,因为大小可以不同(厘米、英寸、毫米等),所以用户对大小有一个外部索引