我有一个 PHP 后端,我目前正在改用 Laravel 框架。但是,我不太确定 Laravel 内部连接是如何工作的。
我试图转移到 Laravel 的 SQL 查询是:
"SELECT leagues.league_name FROM leagues INNER JOIN countries on leagues.country_id = countries.country_id WHERE countries.country_name = '$country' "
有人能解释一下 Laravel Joins 是如何工作的吗?
抱歉,如果这个问题不合适。
原文由 xiimoss 发布,翻译遵循 CC BY-SA 4.0 许可协议
它应该是这样的(尚未测试):
$leagues
将是Illuminate\Support\Collection
对象的实例,因此您可以使用foreach
对其进行迭代。您可以将第 5 个参数传递给
join()
函数,该函数将指定连接类型(默认为“内部”)。如果您使用的是 Eloquent 并且拥有“League”模型,那么您也可以在模型上使用 join:
在这种情况下,
$leagues
将是Illuminate\Database\Eloquent\Collection
的一个实例,它扩展了常规的 Laravel 集合,并为您提供了比常规集合更多的功能。但是,甚至还有一种更简单的方法可以在不使用连接的情况下编写它:
请注意,在此示例中,“国家”不是表名,而是 Eloquent 关系名称,因此您需要在使用此方法之前设置您的关系。
另外,这个例子不使用连接,而是使用两个查询,或者一个嵌套查询,我不确定;但像这样:
SELECT league_name FROM leagues WHERE country_id IN (SELECT id FROM countries WHERE country_name='$country')