MySQL присоединиться к ON и AND, чтобы laravel красноречивый

Мне удалось получить результат запроса мне нужно с помощью следующего необработанного SQL:

select `person`.`id`, `full_name`, count(actions.user_id) as total
from `persons`
left join `actions`
on `actions`.`person_id` = `persons`.`id` 
and `actions`.`user_id` = $user
where `type` = 'mp' 
group by `persons`.`id`

Но я пока не смог заставить его работать красноречиво.

Основываясь на некоторых похожих ответах, я попробовал функции внутри->where() или жеleftJoin(), ноcount действия каждого человека еще не отфильтрованы$user, Как оно стоит:

$query = Person::leftJoin('actions', function($q) use ($user)
        {
            $q->on('actions.person_id', 'persons.id')
                ->where('actions.user_id', $user);
        })
        ->groupBy('persons.id')
        ->where('type', 'foo')
        //->where('actions.user_id', '=', $user)
        ->get(['persons.id', 'full_name', DB::raw('count(actions.id) as total')]);

Я по крайней мере направляюсь вгрубо правильное направление, верно ...?

Если это актуально, тоPersons.php модель имеет дваactions отношения:

public function actions()
{
    return $this->hasMany('Action');
}

public function actionsUser($id)
{
    return $this->hasMany('Action')->where('user_id', $id);
}

Ответы на вопрос(2)

Ваш ответ на вопрос