为查询定义AS
的任何方式??
我尝试了以下内容:
$data = News::order_by('news.id', 'desc')
->join('categories', 'news.category_id', '=', 'categories.id')
->left_join('users', 'news.user_id', '=', 'users.id') // ['created_by']
->left_join('users', 'news.modified_by', '=', 'users.id') // ['modified_by']
->paginate(30, array('news.title', 'categories.name as categories', 'users.name as username'));
问题是,类别中的['name']
将替换为users
中的users.name
。任何方式让他们有不同的名字?
上面有别名...如何创建两个连接返回{{1}}的别名?
答案 0 :(得分:65)
paginate()
方法的第二个参数接受表列的数组以在查询中进行选择。所以这一部分:
paginate(30, array('news.title, category.name'));
必须是这样的:
paginate(30, array('news.title', 'category.name'));
更新 (更改问题后)
试试这个:
->paginate(30, array('news.title', 'categories.name as category_name', 'users.name as user_name'));
更新2 (再次更改问题后)
您也可以在表格上使用别名:
$data = News::order_by('news.id', 'desc')
->join('categories', 'news.category_id', '=', 'categories.id')
->join('users as u1', 'news.user_id', '=', 'u1.id') // ['created_by']
->join('users as u2', 'news.modified_by', '=', 'u2.id') // ['modified_by']
->paginate(30, array('news.title', 'categories.name as categories', 'u1.name as creater_username', 'u2.name as modifier_username'));
答案 1 :(得分:1)
这个问题的更简单明了的答案是,我一直在寻找Eloquent支持直接使用表名或列名的别名,例如:
$users = DB::table('really_long_table_name AS t')
->select('t.id AS uid')
->get();