查询构建器对象在先前构建的对象(Laravel)中看不到别名

时间:2015-09-07 12:41:32

标签: php mysql laravel query-builder

这是我的第一个问题:

$base=\DB::table('user')->select('firstname as name');

然后我想在第二个查询中访问别名列:

$base->select('name');

但我看错了。我可以访问表用户的所有列。有没有办法改变它,所以我可以在第二个查询中使用别名?

整个代码在这里:

$base=\DB::table('user')->select('firstname as name');
var_dump($base->get());//Everything is ok, I see the aliases 
var_dump($base->select('name')->get);//I see nothing, there's no column 'name'

这里有更多代码:

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)

您无法创建永久列别名。但是,您可以创建一个view,其中包含您希望命名的字段。然后通过模型的$table属性将模型指向此视图作为常规表。