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

Php 在laravel查询生成器中保留别名,php,mysql,sql,laravel,query-builder,Php,Mysql,Sql,Laravel,Query Builder,主要问题是我得到了很多不同的查询,我想在它们上面加上别名,然后用另一个查询为图表准备数据。如果出现别名是很困难的。每个查询只能有一个select()$var被传递到getNames()是一个查询,已经有select(),因此添加更多select()将覆盖上一个查询 尝试从getNames()中删除select(),并测试是否得到结果 function getPerson(){ return \DB::table('user')->select('firstname as name'

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

每个查询只能有一个
select()
<代码>$var被传递到
getNames()
是一个查询,已经有
select()
,因此添加更多
select()
将覆盖上一个查询

尝试从
getNames()
中删除
select()
,并测试是否得到结果

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

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

那么有没有执行嵌套选择的方法呢?正如我所知,Eloquent不直接支持嵌套选择。在构建查询时需要使用一些原始SQL。所以这取决于您想要实现的最终SQL。试试谷歌的“雄辩嵌套选择”,这里有一些例子。
function getNames($var){
    return $var->where('age', 10)->get();
}