Laravel:多对多关系中的多个子句

时间:2016-08-24 14:02:54

标签: laravel many-to-many relationships

我无法在laravel上创建此sql查询:

x%2 != 0

Events_Theatre模型有这种关系:

var vid = document.getElementById("myVideo"); 

    function playVid() { 
        vid.play(); 
    } 

    function pauseVid() { 
        vid.pause(); 
    }

虽然MyEvent模型有这种关系:

select * from `events_theatre` where
    event_id IN (
        select id from events where (`events`.`id` = `events_theatre`.`event_id` and `user_id` = 1 and `event_type` ='theatre') and `events`.`deleted_at` is null
    )
    or event_id IN (
        select id from events inner join events_managers on events.id = events_managers.event_id and events_managers.user_id = 1
    )
    and `events_theatre`.`deleted_at` is null

实际上,Events_Theatre模型是一个事件模型,一个事件模型可能有很多管理员,但只有一个管理员。

我需要获取其用户是管理员或其中一位经理的Events_Theatre(和他们的MyEvent)。

我尝试了这个雄辩的问题:

public function event()
{
    return $this->hasOne('App\MyEvent', 'id');
}

但是我得到了这个SQL查询:

public function managers()
{
    return $this->belongsToMany('App\User', 'events_managers', 'event_id', 'user_id');
}

但错了。我该如何解决这个问题?

由于

已更新

我得到了答案。这是我使用的雄辩代码:

$list = App\Events_Theatre::whereIn('event_id', function ($query) {
    $query
        ->where(['user_id' => Auth::id(), 'event_type' => 'theatre'])
        ->orWhereHas('managers', function ($query) {
            $query->where('user_id', Auth::id());
        });
});

1 个答案:

答案 0 :(得分:0)

您可以尝试使用has方法

content_length