使用Laravel中的关系从第二个表中获取基于条件的关联记录

使用Laravel中的关系从第二个表中获取基于条件的关联记录,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我的用户表结构如下: id | user_id | name 第二张桌子是预订桌 id | user_id | category_id | booking_amt 现在我想从预订表中获取所有数据,其中用户id和类别id匹配 我正在尝试这样的事情: 我正在从用户表中获取所有数据: $query = User::where(['active'=>1])->get(); 预订模式: public function user() { ret

我的用户表结构如下:

id | user_id | name
第二张桌子是预订桌

id |  user_id  |  category_id  | booking_amt
现在我想从预订表中获取所有数据,其中用户id和类别id匹配

我正在尝试这样的事情:

我正在从用户表中获取所有数据:

 $query = User::where(['active'=>1])->get();    
预订模式:

  public function user()
    {
        return $this->belongsTo(User::class,'user_id');
    }
在您的预订模式中:

  public function user()
    {
        return $this->belongsTo(User::class,'user_id');
    }
然后,对于查询:

 $query = Booking ::where('user_id',$user_id)->where('category_id',$category_id)->with('user')->get();

您的
用户
表应该只有

id | name 
现在,您可以与
bookings
表建立外键关系。然后在各自的模型中创建关系函数

用户
模型中

public function bookings()
{
    return $this->hasMany(Booking::class);
}
public function user()
{
    return $this->belongsTo(User::class);
}
预订
模型中

public function bookings()
{
    return $this->hasMany(Booking::class);
}
public function user()
{
    return $this->belongsTo(User::class);
}
现在可以查询关系了

$query = User::whereHas('bookings' , function($query) use($category_id) {
    $query->where('category_id', $category_id);
})->with('bookings')->where('active', 1);
同样,您可以查询用户

$query = Booking::whereHas('user' , function($query) use($name) {
    $query->where('name', $name)->where('active', 1);
})->with('user');

您可以根据自己的选择查询任何内容,只需记住语法即可。

谢谢,但我也想获得用户详细信息,所以我想使用关系