使用 sql 'like' 语句而不是 Laravel 中的多对一关系

using sql 'like' statement instead of many to one relationship in Laravel

我是 Laravel 的初学者,通常是关系 table 的初学者,我不确定如何使用 Laravel 关系。 想象一下,我们有一个包含汽车的 table。每辆车都有一个原产国。我认为我可以在每条记录(汽车)中插入国家名称,也可以为国家创建另一个 table 并在 Laravel 中建立多对一关系并为每辆车设置一个国家我的 table。第一选择有什么问题?

我在想,第二个可能是按国家/地区搜索 throw cars 的更好方法,但我们可以使用 SQL 中的 'like' 语句来实现。

我作为 sql 问题回答,因为我不使用 Laravel。

您需要 2 table:汽车和国家。如果你在汽车 table 上插入国家名称,你就会有重复的名称,如果出现拼写错误,你必须更新拼写错误的国家记录和所有具有相同错误的汽车记录。此外,如果您删除一个国家/地区,您最终可能会出现不一致:删除的国家/地区可能会保留在汽车上 table.

您可以在连接两个 table 后使用 like 语句:

SELECT cars.*, country.name
FROM cars, country
WHERE cars.id_country = country.id
AND country.name LIKE 'A%'

(您找到所有以 'A' 开头的国家/地区)。

我把这两个 table 想象成:

  • cars(..., int id_country, ...) <- 此处没有国家名称!
  • 国家(计数器 ID,varchar(64) 名称,...)

where cars.id_country references country(id): id_country is a 'foreign key' for 'primary key' country.id (如果你需要,你可以在任何地方找到这个定义它们以及如何在每个 dbms 中声明它们)。