Php Laravel-查询生成器中同一表的两个或多个别名

Php Laravel-查询生成器中同一表的两个或多个别名,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我需要用querybuilder在Laravel中复制一个SQL查询,但我不知道如何为同一个表定义多个别名 我的SQL查询工作正常 select b.url as url, b.id as id from item a, item b where a.type = 'big' AND a.published = 1 AND b.parent_id = a.id AND b.published = 1 这是Laravel的尝试: $query = DB::table('item as a, it

我需要用querybuilder在Laravel中复制一个
SQL
查询,但我不知道如何为同一个表定义多个别名

我的
SQL
查询工作正常

select b.url as url, b.id as id
from item a, item b
where a.type = 'big'
AND a.published = 1
AND b.parent_id = a.id
AND b.published = 1
这是Laravel的尝试:

$query = DB::table('item as a, item as b');
$query->where('a.type', '=', 'big');
$query->where('a.published', '=', 1);
$query->where('b.parent_id', '=', 'a.id');
$query->where('b.published', '=', 1);
我还尝试:

$query = DB::table('item');
$query->fromRaw('item a, item b');
$query->where('a.type', '=', 'big');
$query->where('a.published', '=', 1);
$query->where('b.parent_id', '=', 'a.id');
$query->where('b.published', '=', 1);
我需要使用查询生成器,因为我在接下来的步骤中需要一些条件,这就是为什么我不能使用简单的“hasMany”关系

使用
项目更新
表格详细信息:

原始表达式

有时您可能需要在查询中使用原始表达式。这些表达式将作为字符串注入查询中,因此请注意不要创建任何SQL注入点!要创建原始表达式,可以使用
DB::raw
方法:

#原始表达式

有时您可能需要在查询中使用原始表达式。这些表达式将作为字符串注入查询中,因此请注意不要创建任何SQL注入点!要创建原始表达式,可以使用
DB::raw
方法:


你的意思是“项目1为a”和“项目2为b”。对吗?嗯,为什么你需要在同一张表上有两个别名?请把你的表结构。可能需要使用连接函数。您的意思是“item1作为a”和“item2作为b”。对吗?嗯,为什么你需要在同一张表上有两个别名?请把你的表结构。可能需要使用连接函数。我想您需要修复where('b.parent\u id','=',DB::raw('a.id'))我想您需要修复where('b.parent\u id','=',DB::raw('a.id'))
$query = DB::table(DB::raw('item as a, item as b'))
              ->where('a.type', '=', 'big')
              ->where('a.published','=',1)
              ->where('b.parent_id','=', DB::raw('a.id'))
              ->select('b.url','b.id')
              ->get();