如何解决使用Laravel中的关系根据第二个表的条件获取关联记录
我有一个用户表结构,如:
id | user_id | name
第二张桌子是预订表
id | user_id | category_id | booking_amt
现在,我想从预订表中获取user_id和category_id匹配的所有数据。
我正在尝试这样的事情:
我正在从用户表中获取所有数据:
$query = User::where(['active'=>1])->get();
预订模式:
public function getAssociatedDealer()
{
return $this->hasMany('App\Models\Booking','user_id','category_id');
}
解决方法
您的users
表只能有
id | name
现在,您可以与bookings
表建立外键关系。然后在各个模型中创建关系函数。
在User
模型中。
public function bookings()
{
return $this->hasMany(Booking::class);
}
在Booking
模型中。
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');
您可以选择查询任何内容,只需记住语法即可。
,在您的预订模型中:
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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。