php - 在 Laravel 中使用 sql 'like' 语句而不是多对一关系
问题描述
我是 Laravel 的初学者,通常是关系表,我不确定是否使用 Laravel 关系。想象一下,我们有一个包含汽车的表。每辆车都有一个原产国。我认为我可以在每条记录(汽车)中插入国家名称,也可以为国家/地区创建另一个表,并在 Laravel 中建立多对一关系,并为表中的每辆汽车设置一个国家/地区。第一选择有什么问题?
我在想第二个可能是按国家搜索投掷汽车的更好方法,但我们可以使用 SQL 中的“like”语句来做到这一点。
解决方案
因为我不使用 Laravel,所以我作为一个 sql 问题回答。
你需要两张桌子:汽车和国家。如果您在汽车表上插入国家/地区名称,则名称重复,如果出现拼写错误,您必须更新拼写错误的国家/地区记录和所有具有相同错误的汽车记录。此外,如果您删除一个国家/地区,您最终可能会出现不一致:删除的国家/地区可能会保留在 car table 上。
您可以在对两个表进行连接后使用 like 语句:
SELECT cars.*, country.name
FROM cars, country
WHERE cars.id_country = country.id
AND country.name LIKE 'A%'
(您会找到以“A”开头的所有国家/地区)。
我将这两个表想象为:
- 汽车(..., int id_country, ...) <- 这里没有国家名称!
- 国家(计数器 id,varchar(64) 名称,...)
其中cars.id_country 引用国家(id):id_country 是“主键”country.id 的“外键”(如果需要,您可以在任何地方找到此定义以及如何在每个dbms 中声明它们)。
推荐阅读
- python - 打印方法“无效语法”反转字符串
- typescript - Typescript中类中所有函数的强制返回类型
- c++ - 序列化一个成员为向量的类
> 使用 boost:: 序列化 - angular7 - 无法构建项目
- python-3.x - 如何给函数一个参数而不在python中执行它?
- reactjs - 如何从日志文件而不是应用程序日志输出日志
- java - JUnit 测试类顺序
- html - 如何使用 CSS 使我的徽标看起来像我想要的样子?
- apache-spark - 使用 nohup 命令自动执行一系列 spark 作业
- java - Spring Boot 中的 CrudRespository 方法在哪里实现?