Answers:
Laravel使用来支持表和列的别名AS
。尝试
$users = DB::table('really_long_table_name AS t')
->select('t.id AS uid')
->get();
让我们看看它的强大tinker
工具
$ PHP工匠修补匠 [1]>模式:: create('really_long_table_name',function($ table){$ table-> increments('id');}); // 空值 [2]> DB :: table('really_long_table_name')-> insert(['id'=> null]); //正确 [3]> DB :: table('really_long_table_name AS t')-> select('t.id AS uid')-> get(); //数组( // 0 => object(stdClass)( //'uid'=>'1' //) //)
protected $table = "books";
),然后我该如何别名?(例如生成的sql:... FROM books AS A ...
)
protected $table = 'really_long_table_name AS short_name';
但是在INSERT上失败。也可能中断关系查询。我正在使用流明和DDD /存储库模式来完全避免Eloquent。
要在雄辩的模型上使用别名,请按如下所示修改代码:
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();
这将自动在表名称中添加表前缀,并返回Items
模型的实例。不是简单的查询结果。添加DB::raw
可防止laravel将表前缀添加到别名。
Unknown column 'table_alias.deleted_at'
->withTrashed()
并且->whereNull('table_alias.deleted_at')
这是一种方法。我将举一个加入的例子,以使某人变得非常清楚。
$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();
希望这可以帮助。
您可以使用更少的代码来编写:
$users = DB::table('really_long_table_name')
->get(array('really_long_table_name.field_very_long_name as short_name'));
当然,如果您想选择更多字段,只需写一个“,”并添加更多:
$users = DB::table('really_long_table_name')
->get(array('really_long_table_name.field_very_long_name as short_name', 'really_long_table_name.another_field as other', 'and_another'));
当您使用联接复杂查询时,这非常实用
与AMIB答案相同,对于软删除错误“未知列'table_alias.deleted_at'”,只需添加即可,->withTrashed()
然后自己处理->whereRaw('items_alias.deleted_at IS NULL')