gpt4 book ai didi

php - Laravel - whereHas 在不检查其他人的情况下检查关系的最新记录

转载 作者:行者123 更新时间:2023-12-03 22:59:10 26 4
gpt4 key购买 nike

我有两个具有一对多关系的表。

预订 - (id)

booking_tasks - (id, booking_id,user_id)

一个预订有很多任务一项任务有一个预订

预订模式:

 public function tasks() {
return $this->hasMany('App\BookingTask');
}

预订任务模型

public function booking() {
return $this->belongsTo('App\Booking');
}

我想获取预订列表,user_id = 2 用于预订的最新 booking_task。我不想检查预订的其他旧 booking_tasks。

例如:

enter image description here

我想检查booking_task 的user_id=2 的最后一条记录是否为预订。在示例中,最后一个 booking_task 的 user_id = 5。因此它不会作为 booking。

我的代码是:

$bookings=Booking::whereHas('tasks',function($q){
$q->where('user_id',2);//this will check whether any of record has user_id =2
})->get();

我也用过这个:但这不是正确的,

$bookings=Booking::whereHas('tasks',function($q){
$q->latest()->where('user_id',2)->limit(1);//this will check whether any of record has user_id =2 and return latest one.
})->get();

请问我能解决这个问题吗,我也必须使用 Laravel Eloquent。

最佳答案

这需要更复杂的查询:

$bookings = Booking::select('bookings.*')
->join('booking_tasks', 'bookings.id', 'booking_tasks.booking_id')
->where('booking_tasks.user_id', 2)
->where('booking_tasks.id', function($query) {
$query->select('id')
->from('booking_tasks')
->whereColumn('booking_id', 'bookings.id')
->latest()
->limit(1);
})->get();

关于php - Laravel - whereHas 在不检查其他人的情况下检查关系的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53115064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com