Php 如何连接其他表并计算laravel中的行?

Php 如何连接其他表并计算laravel中的行?,php,mysql,laravel,Php,Mysql,Laravel,我试图计算每个求职者需要多少职位。 我有两张表格:求职者和职位 求职者: 职位及职位: 我的预期结果是: +----+---------+-----------+----------------+-----------------------+ | id | fb_name | fullname | desireposition | total_requireposition | +----+---------+-----------+----------------+------------

我试图计算每个求职者需要多少职位。 我有两张表格:求职者和职位

求职者:

职位及职位:

我的预期结果是:

+----+---------+-----------+----------------+-----------------------+
| id | fb_name | fullname  | desireposition | total_requireposition |
+----+---------+-----------+----------------+-----------------------+
|  1 | John    | John Cena |              3 |                     3 |
|  2 | Christ  | Christ    |              4 |                     2 |
|  3 | Thomas  | Cfitcher  |              2 |                     0 |
+----+---------+-----------+----------------+-----------------------+
我想计算一下每个求职者需要多少职位

下面是我尝试使用交叉连接的内容,但我不确定实际需要使用哪个连接

$jobseekers = Jobseeker::crossJoin('jobpositions')
              >select('fullname','fb_name','desire_position', DB::raw('count(require_position) as total_requireposition'))
            ->groupBy('fullname')->paginate(10);

有人能帮我指路吗?非常感谢您的帮助。

您需要的常规MySQL查询是:

SELECT s.id, fullname, fb_name, desireposition, IFNULL(COUNT(require_position), 0) AS require_position
FROM jobseeker AS s
LEFT JOIN jobposition AS p ON s.desireposition = p.require_position
GROUP BY s.id
我不使用Laravel,但我认为翻译应该是:

$Jobseeker->select('fullname','fb_name','desire_position', DB::raw('IFNULL(COUNT(require_position), 0) as total_requireposition'))
        ->leftjoin('jobposition', 'desireposition', '=', 'require_position')
        ->groupBy('jobseeker.id')
        ->paginate(10)

您需要的常规MySQL查询是:

SELECT s.id, fullname, fb_name, desireposition, IFNULL(COUNT(require_position), 0) AS require_position
FROM jobseeker AS s
LEFT JOIN jobposition AS p ON s.desireposition = p.require_position
GROUP BY s.id
我不使用Laravel,但我认为翻译应该是:

$Jobseeker->select('fullname','fb_name','desire_position', DB::raw('IFNULL(COUNT(require_position), 0) as total_requireposition'))
        ->leftjoin('jobposition', 'desireposition', '=', 'require_position')
        ->groupBy('jobseeker.id')
        ->paginate(10)

您需要使用左联接来获得零计数。@LawrencerOne bro我的查询还不正确,甚至在Laravel中如何编写左联接的问题上也有错误。左联接需要与Jobseker表和Jobsposition表中的求职者id相同,但在我的情况下,Jobsposition表中没有求职者id@Barmar@Sohel0415,兄弟,我是通过下面的答案得到的。谢谢你的回答。你需要使用左连接来获得零计数。@LawrenceCherone bro我的查询还不正确,甚至还有关于如何在Laravel中写入左连接的拼写错误。左连接需要与JobSeek表和jobposition表中的求职者id相同,但在我的情况下,jobposition表中没有求职者id@Barmar@Sohel0415,兄弟,我是通过下面的答案得到的。谢谢你的回答。谢谢兄弟,我明白了,真的很感激。谢谢兄弟,我明白了,真的很感激