3

我开始使用 Laravel 框架,但流畅的查询生成器有问题。在 where 条件下,如果我使用原始值或Input::get(),它会检索结果并正确执行,但是当我使用分配的变量时,它会显示“未定义的变量”错误。

$properties = Listing::where(function($query)
{
    if (Input::has('property-type')) $query->where('property_type', '=',Input::get('property-type'));
})->get();

它工作正常,但如果我这样做

$pt=Input::get('property-type');
$properties = Listing::where(function($query)
{
    if ($pt!='') $query->where('property_type', '=',$pt);
})->get();

它返回错误

Undefined variable: pt

如果我打印变量“$pt”,它包含该值。

我只想使用变量值,因为我应该将这些值从控制器传递给模型作为参数,并在模型函数中构建查询。难道我做错了什么?在查询执行之前没有分配变量吗?请问,谁能帮我解决这个问题?

4

2 回答 2

2

感谢@viji 评论,您可以使用 phpuse关键字来做到这一点:

$var = 5;
$orgs = app('db')->table('t')
        ->where('status', '=', '1')
        // Sending $var to anonymous function
        ->where(function ($query) use ($var) {
            $query->where('orgs.name', 'like', "%$var%");
        })->select('id')
        ->get();
于 2016-09-21T18:14:36.023 回答
0

您在变量上苦苦挣扎的原因是它超出了匿名函数的范围。

我不用担心将变量传递给模型来构造查询,只需使用很棒的Input类方法。

于 2013-01-24T18:10:54.423 回答