我有两个表:事件和预订 一场事件有多个预订
Event Bookings 1 1 1 2 1 3 2 //consider this as no row in bookings table 3 4 3 5 3 6 4
I need to get list of events that have no bookings, that is there is no foreign key reference of events_id in bookings table. so here Event 2 and 4. If all the events have some bookings then the one with least bookings shows up.
$query = select E.id, E.name,
count('B.event_id')
as totalbookings
from events E, bookings B where E.id = B.event_id
group by B.event_id;
获取所有事件的列表以及包含部分预订的事件的总预订量。
如何获取根本没有预订的事件数据?
最佳答案
好的。那么,您需要获取没有预订的事件吗?让我们看看这里的一些解决方案。
我们可以使用 Eloquent 来完成类似的事情。
假设您有一个包含以下方法的事件模型:
public function bookings()
{
return $this->hasMany(Bookings::class, 'FK', 'PK');
}
以及一个包含以下方法的 Bookings 模型:
public function event()
{
return $this->belongsTo(Event::class, 'FK', 'PK');
}
您可以在 Controller 中执行类似的操作:
$events = 事件::whereHas('bookings')->get()->count();
这将获取所有与预订相关的事件的集合并对其进行计数。这 Eloquent 地解决了一个问题,现在针对没有预订的事件。
Laravels Eloquent ORM 没有我们可以使用的 hasNot 方法,但是我们可以使用 Eagarloading 约束来实现您需要的结果。
我们可以通过执行以下操作来获取所有没有预订的事件:
$events = Events::whereHas("bookings", function($q) {
$q->whereNotNull('deleted_at');
}, '<', 1)->get();
我相信这应该为您提供所有没有预订的事件的集合。
让我知道你过得怎么样!
关于mysql - 最不受欢迎的事件 - 获取预订为空或最少的事件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36822652/