使用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');
您可以根据自己的选择查询任何内容,只需记住语法即可。谢谢,但我也想获得用户详细信息,所以我想使用关系