Laravel加入查询AS

Ale*_*lex 23 php mysql pagination laravel eloquent

任何定义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'));
Run Code Online (Sandbox Code Playgroud)

问题是['name']从类别中将替换为来自的类别users.有什么方法让他们有不同的名字?

拥有上面的别名...如何创建两个连接返回的别名users.name

ayk*_*kut 66

paginate()method的第二个参数接受在查询中选择的表列数组.这部分:

paginate(30, array('news.title, category.name'));
Run Code Online (Sandbox Code Playgroud)

一定是这样的:

paginate(30, array('news.title', 'category.name'));
Run Code Online (Sandbox Code Playgroud)

更新 (更改问题后)

试试这个:

->paginate(30, array('news.title', 'categories.name as category_name', 'users.name as user_name'));
Run Code Online (Sandbox Code Playgroud)

更新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'));
Run Code Online (Sandbox Code Playgroud)