2016-08-20 53 views
0

我有一个模型的函数:在Laravel使用别名查询

public function getAll() 
    { 
     $allusers = DB::table('users')->join('countries', 'countries.id', '=', 'users.country_id')->get(); 
     return $allusers; 
    } 

这工作得很好,除了用户的id是由这个国家的ID代替:

array(2) { [0]=> object(stdClass)#201 (20) { ["id"]=> int(42) ["name"]=> string(11) "Jim Elliott" ... and so on 

的ID应该是1,因为country_id是42.

我应该为国家ID添加别名吗?还是我可以限制国家表的字段只是国家和国旗?

+1

你试过 '$ ALLUSERS = DB ::表(“用户”) - >连接( (''countries','users.country_id','=','countries.id') - > get();' – vitr

+0

对不起,没有什么区别 – Jim

+0

正确定义你的关系,然后使用'return User :: with('国家');' –

回答

0
$users = DB::table('users')->join('countries', 'countries.id', '=', 'users.country_id') 
    ->select(DB::raw(
     "SELECT users.*,countries.*, users.id AS 'user_id', 
     countries.id AS 'country_id'" 
    ); 
+0

这不起作用,因为我不断收到语法错误。 – Jim

0

最后我欺骗了一个视图,在这个视图中我链接了两个表格,并给了国家ID的别名。不是一个优雅的解决方案,但它的工作。我肯定有做它在Laravel没有一个视图以适当的方式,所以我的功能则成了:

$allusers = DB::table('v_users')->get(); 
return $allusers;