在laravel查询生成器中保留别名

时间:2015-09-09 10:33:19

标签: php mysql sql laravel query-builder

function getPerson(){
    return \DB::table('user')->select('firstname as name', 'age');
}

function getPet(){
    return \DB::table('pet')->select('petname as name', 'age');
}

function getNames($var){
    return $var->select('name')->where('age', 10)->get();
}

$base = getNames(getPerson());//empty here
$base = getNames(getPet());//empty here

主要问题是我有很多不同的查询,我想在它们上面添加别名,然后用另一个查询为图表准备数据。如果别名消失,很难。

1 个答案:

答案 0 :(得分:2)

每个查询只能有一个Dateselect()传递给$var的查询已经getNames(),因此添加更多select()会覆盖之前的select()

尝试从select()移除getNames()并测试您是否得到了结果。

function getNames($var){
    return $var->where('age', 10)->get();
}

请记住,您正在使用'查询构建器'这意味着您要添加的每个查询约束都被添加到同一查询中,而不是不同的查询。一旦您尝试获取结果数据集(如调用get()first()等),将实际构建并执行整个查询。