由于laravel

时间:2018-02-19 17:29:59

标签: sql laravel laravel-eloquent

我使用以下代码连接控制器中的两个表

$clientdata = DB::table('clients')
 ->join('users', 'clients.id', '=', 'users.id')->get();

在刀片中:

@foreach($clientdata as $clientdata)
<td>{{$clientdata->first_name(client)}}</td>
<td>{{$clientdata->last_name(client)}}</td>
<td>{{$clientdata->first_name(users)}}</td>
<td>{{$clientdata->last_name(users)}}</td>
@endforeach

但是我的两个表客户端和用户都包含与first_namelast_name同名的列,我想访问两个客户端表和用户的first_namelast_name表,我该怎么做呢

3 个答案:

答案 0 :(得分:0)

你可以做到

$clientdata = DB::table('clients')
   ->join('users', 'clients.id', '=', 'users.id')
   ->select(
       'users.first_name as users_first_name',
       'users.last_name as users_last_name',
       'clients.first_name as clients_first_name',
       'clients.last_name as clients_last_name',
   )
   ->get();

在您的刀片文件中:

@foreach($clientdata as $data)
<td>{{$data->users_first_name}}</td>
<td>{{$data->users_last_name}}</td>
<td>{{$data->clients_first_name}}</td>
<td>{{$data->clients_last_name}}</td>
@endforeach

答案 1 :(得分:0)

试试此代码

     DB::table('clients') ->join('users', 'clients.id', '=', 'users.id')->select('clients*', DB::raw('clients as client_name'))->get();

答案 2 :(得分:0)

我总是使用此解决方案

一个懒惰:)(如果列数很高)

我选择了两个表(table。*)中的所有列,并为我的歧义列添加了别名(table.ambiguous_1 AS别名)

示例

$clientdata = DB::table('clients')
->join('users', 'clients.id', '=', 'users.id')
->select(
   'users.*',
   'clients.*',
   'users.first_name AS users_first_name',
   'users.last_name AS users_last_name',
   'clients.first_name AS clients_first_name',
   'clients.last_name AS clients_last_name',
)
->get();

在刀片服务器中,我为歧义列使用别名,而在其他列中使用原始列名称。