我开始使用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”,则它包含值。
我想只使用变量值,因为我应该将这些值从控制器传递给模型作为参数,并在模型函数中构建查询。难道我做错了什么?在查询执行之前是否未分配变量?请问,任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
感谢@viji评论,您可以使用php use
关键字
$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();
答案 1 :(得分:0)
你正在努力使用变量是因为它超出了匿名函数的范围。
我不担心将变量传递给模型来构造查询,只需使用真棒Input
类方法。