gpt4 book ai didi

mysql - 用于检索单个用户注册事件的 Eloquent 查询

转载 作者:行者123 更新时间:2023-11-29 16:46:13 24 4
gpt4 key购买 nike

我有 4 个表,如下所示:

users
- id
- name
- others
organizations
- id
- others
events
- id
- organization_id
- title
- others
participatings (intermediate table for table organizations and events)
- user_id
- event_id

因此,一个用户可以注册一些事件,并且一个事件可以有一些用户。组织可以创建一些事件。当用户登录时,他可以看到他已经注册的一些事件。问题: 我想在 Laravel 中使用 eloquent(首选)或查询生成器编写查询来检索用户已注册的事件。因此每个用户都可以注册某些事件并在一个页面中看到他已注册的事件。到目前为止我已经写了一个原始的sql。我想应该是这样的(还没尝过):

select events.*, organizations.id, organizations.name from events join organizations on events.organization_id = organization.id where events.id in (select event_id from participatings where user_id = 1)

我的目标是:我想检索登录用户已注册的事件。数据将是事件本身和举办事件的组织。

我的模型如下所示:

Event.php
----------------------
class Event extends Model{
public function organization(){
return $this->belongsTo('App\Organization');
}

public function users(){
return $this->belongsToMany('App\User', 'participatings');
}
}


User.php
--------------------
class User extends Authenticatable{
use Notifiable;

public function events(){
return $this->belongsToMany('App\Event', 'participatings');
}

}


Organization.php
----------------------
class Organization extends Authenticatable{
use Notifiable;

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

最佳答案

假设您已为用户和组织创建了正确的所属关系。使用以下查询来过滤用户使用提供的 ID 注册的组织,然后将其与事件结合起来以获取该组织的事件。

Organisations::with('users')
->leftjoin('events', 'events.organization_id', '=', 'organizations.id')
->whereHas('users', function ($q) use ($userId) {
$q->where('id', $userId);
})->get();

关于mysql - 用于检索单个用户注册事件的 Eloquent 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53101571/

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