当前位置: 首页 > 知识库问答 >
问题:

如何别名表Laravel雄辩查询(或使用查询生成器)?

巫马英豪
2023-03-14

假设我们正在使用Laravel的查询生成器:

$users = DB::table('really_long_table_name')
           ->select('really_long_table_name.id')
           ->get();

我正在寻找一个等效的SQL:

really_long_table_name AS short_name

当我必须键入大量select和WHERE(或者通常在select的列alias中包含别名,并且它在结果数组中使用)时,这将特别有用。如果没有任何表别名,我需要输入更多的内容,所有内容的可读性都会降低。在laravel文档中找不到答案,有什么想法吗?

共有3个答案

张砚
2023-03-14

以下是一个人如何做到这一点。我将举一个加入的例子,这样对某人来说就变得非常清楚了。

$products = DB::table('products AS pr')
        ->leftJoin('product_families AS pf', 'pf.id', '=', 'pr.product_family_id')
        ->select('pr.id as id', 'pf.name as product_family_name', 'pf.id as product_family_id')
        ->orderBy('pr.id', 'desc')
        ->get();

希望这有帮助。

潘修文
2023-03-14

要在雄辩的模型上使用别名,请按如下方式修改代码:

Item
    ::from( 'items as items_alias' )
    ->join( 'attachments as att', DB::raw( 'att.item_id' ), '=', DB::raw( 'items_alias.id' ) )
    ->select( DB::raw( 'items_alias.*' ) )
    ->get();

这将自动将表前缀添加到表名称中,并返回模型的实例。不是一个简单的查询结果。添加DB::raw可防止laravel向别名添加表前缀。

丁阳羽
2023-03-14

Laravel支持具有AS的表和列的别名。试试看

$users = DB::table('really_long_table_name AS t')
           ->select('t.id AS uid')
           ->get();

让我们用一个很棒的tinker工具来看看它的实际应用

$ php artisan tinker
[1] > Schema::create('really_long_table_name', function($table) {$table->increments('id');});
// NULL
[2] > DB::table('really_long_table_name')->insert(['id' => null]);
// true
[3] > DB::table('really_long_table_name AS t')->select('t.id AS uid')->get();
// array(
//   0 => object(stdClass)(
//     'uid' => '1'
//   )
// )
 类似资料:
  • 我使用laravel雄辩到CRUD数据。我的问题是,我不知道如何使用laravel雄辩的ORM进行UNION查询。你能帮我解决我的问题吗 这是我想要在laravel雄辩或查询生成器中实现的示例查询

  • Laravel Eloquent的save()方法实质上是执行查询生成器的工作吗? 查询生成器: 雄辩的: 如果这是真的,那么Eloquent的也是如此吗?我正在看Laravel的官方视频教程,我看到作者在控制器中使用了雄辩的和。这就是查询生成器和雄辩的区别吗?我们可以使用雄辩的内部控制器?

  • 我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?

  • 问题内容: 可以说我们正在使用Laravel的查询生成器: 我正在寻找等效于此SQL: 当我必须在很多选择和位置输入很多内容时(或通常在选择的列别名中也包含别名,并且在结果数组中使用别名时),这将特别有用。没有任何表别名,我需要输入更多的内容,并且所有内容的可读性也大大降低。在laravel文档中找不到答案,有什么想法吗? 问题答案: Laravel使用来支持表和列的别名。尝试 让我们看看它的强大

  • 我正在使用Laravel5.1进行CMS开发。我有一个简单的帖子结构,用户和用户都可以喜欢帖子。 帖子和用户有多对多关系,并使用数据透视表来表示关系。 职位模型有 用户模型有 我想列出用户的最新活动。例如。 Username1喜欢Post2 Username5喜欢Post9 用户名30喜欢Post25 我知道我必须像这样编写sql查询- 上面的查询工作正常,但有没有办法使用laravel雄辩?

  • 我正在使用Laravel和它提供的雄辩的ORM,但我正在努力选择我需要的数据。我有两种型号 我该怎么做?