代码之家  ›  专栏  ›  技术社区  ›  prakashchhetri

Laravel-获取票务用户

  •  0
  • prakashchhetri  · 技术社区  · 5 年前

    我知道这可能真的很简单,但我无法理解。

    $tickets  = Ticket::all();
    

    使用一行代码,我要获取与每个ticker相关联的所有用户(每个ticket都有一个字段 user_id ),是否有一行代码,可以在Laravel中执行。我可以用以前的方法循环查看每个票证,并按如下所示为每个用户提供详细信息,但我只是在这里寻找最佳实践。

    foreach($tickets as $ticket):
         $ticket->user = User::find($ticket->user_id);
    endforeach;
    
    2 回复  |  直到 5 年前
        1
  •  2
  •   Salman Zafar Mehran    5 年前

    我假设你在模型中定义了正确的关系。

    你可以用拉瓦维尔的雄辩关系得到所有用户的票

    $tickets = User::with('tickets')->get();
    

    $tickets = User::has('tickets')->get();
    

    只买所有的票:

    $tickets = Ticket::all();
    

    @foreach($tickets as $ticket)
     // getting user using relationship
     {{ $ticket->user->name }}
    @endforeach
    

    或者获取与您可以使用的用户关联的票据

    $tickets = Ticket::whereHas('user', function ($q) {
                           $q->with('user');
                       })
                       ->get();
    

    要了解更多关于人际关系的信息,请访问 this

        2
  •  1
  •   Ryan Nghiem    5 年前

    Ticket 带模型 User :

    这是模型中的代码 :

    public function user()
    {
        return $this->hasOne('App\Model\User', 'user_id', 'id'); //id is the primary key in User table
    }
    

    然后获取所有带有用户信息的票据

    $tickets  = Ticket::load('user')->all();
    

    $tickets  = Ticket::with('user')->all();
    
        3
  •  0
  •   porloscerros Ψ    5 年前

    $tickets = Ticket::whereHas('user', function ($query) {
                           $query->with('user');
                       })
                       ->get();
    

    如果您确定所有票证都有关联的用户,请使用:

    $tickets = Ticket::with('user')->get();