【问题标题】:Display data from left join query [Laravel 5]显示来自左连接查询的数据 [Laravel 5]
【发布时间】:2016-09-20 13:04:34
【问题描述】:

堆垛机 我在显示包含联接语句的查询中的数据时遇到问题。

public function view(Request $id)
{
    $user_id = $id->input('id');
    $users = DB::table('users')->select('*')
                ->leftjoin('role_user', 'users.id', '=', 'role_user.user_id')
                ->leftjoin('roles', 'roles.id', '=', 'role_user.role_id')
                ->where('users.id', '=', $user_id)->get();
    return view('/admin/view_user', ['users' => $users]);
}

从上面的代码中,我如何显示来自角色和角色用户的行和连接表数据

【问题讨论】:

    标签: php mysql laravel pdo laravel-5


    【解决方案1】:

    试试这个:

    public function view(Request $id)
    {
        $user_id = $id->input('id');
        $users = DB::table('users')
                    ->select('users.*','role_user.fieldName','roles.fieldName')
                    ->leftjoin('role_user', 'users.id', '=', 'role_user.user_id')
                    ->leftjoin('roles', 'roles.id', '=', 'role_user.role_id')
                    ->where('users.id', '=', $user_id)->get();
        return view('/admin/view_user', ['users' => $users]);
    }
    

    写入tableName.fieldName,在JOIN查询中获取perticalur表的数据

    【讨论】:

    • 我确实尝试了上面的代码,它似乎产生了一个错误“未定义的属性:stdClass::$roles”。这是显示输出的代码 {{$users->roles.name}} {{$users->name}} {{ $users->email}}
    • 您无法通过 :{{$users->roles.name}} 访问值。
    • 那么我应该如何访问所需的表列?这是我第一次使用 Laravel。
    • 在foreach循环访问列中,由ex一一对应。 @foreach($users as $user) {{$user->name}} @endforeach
    • 问题已解决,我遇到了麻烦,因为两个角色表和用户具有相似的列名。为了克服这个问题,我重命名了所需的列,这是更改的部分“->select('users.*', 'roles.name as r_name')”谢谢@Yasin Patel,您非常有帮助跨度>
    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2022-01-20
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多