选择Laravel关系表中不存在的记录

时间:2018-10-07 20:00:23

标签: php laravel

我试图返回所有在分配表中没有行的票证+所有具有相同用户ID的记录。 但是错误不断出现。可能是由于我刚接触laravel。

关系模型

class Ticket extends Model
{
    public function AssignedUsers() 
    {
        return $this->belongsToMany(User::class, 'assigns','ticket_id','user_id')->withTimestamps();
    }
}

这是代码:

$tickets = Ticket::with('AssignedUsers')
        ->WhereHas('AssignedUsers', function($q) {
            $q->where('assigns.user_id', '=', Auth::user()->id)
            ->orWhere('assigns.ticket_id','!=','tickets.id');
        })
        ->get();

到目前为止,我可以使用相同的user_id获取所有记录,但是添加no行条件似乎是个问题,而且我不确定是否要以正确的方式来处理它。

1 个答案:

答案 0 :(得分:1)

我想你是说这个意思

$tickets = Ticket::with('AssignedUsers')
    ->whereHas('AssignedUsers', function($q) {
        $q->where('assigns.user_id', '=', Auth::user()->id);
    })
    ->orDoesntHave('AssignedUsers')
    ->get();