代码之家  ›  专栏  ›  技术社区  ›  Ram Agrawal

由于laravel中的内部联接,对象的属性名称不明确

  •  1
  • Ram Agrawal  · 技术社区  · 7 年前

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

    $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
    

    但我的两个表clients和users都包含与 first_name last_name ,我想访问 first\u名称 last\u姓名 客户端表和用户表的

    3 回复  |  直到 7 年前
        1
  •  4
  •   Prince Lionel N'zi    7 年前

    你可以做到

    $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
    
        2
  •  3
  •   H. ELKINA    5 年前

    我总是使用此解决方案

    懒惰者:)(如果列数较多)

    我选择了两个表中的所有列(表。*),并添加了带有别名的不明确列(table.Unligence\u 1作为别名)

    实例

    $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();
    

    在blade中,我对模棱两可的列使用别名,在其他列中使用原始列名。

        3
  •  1
  •   Boghani Chirag    7 年前

    尝试此代码

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