php - 在其他表中使用关系表的 ID

标签 php mysql database laravel-4 eloquent

我有 2 个使用关系表(ManyToMany)相关的实体,然后我有一个定价表,其中包含医院服务的定价信息。如果与服务关联的医院不同,则此表对于同一服务可以有不同的定价。

hospitals:
id name 

services:
id name

hospital_service:
hospital_id service_id

service_pricing:
id hospital_id service_id weight_range_id LH_price SH_price

service_duration:
id hospital_id service_id weight_range_id LH_duration SH_duration

现在我的问题是我应该重写 service_pricing 表中的 Hospital_id 与 service_id 信息吗?这不是重复数据吗?我已经在 Hospital_service 表中包含此信息。

(同样是我在 service_duration 表中遇到的问题)

我想做的事, 我决定向关系表 (hospital_service) 添加一个 ID 列,并将其用作 service_pricing 表中的外键。

对于我的情况来说,这是一个足够好的解决方案吗?我为此使用 Laravel 的 Eloquent ORM,那么我怎么说“获取医院 2 的服务 7 的定价”?

编辑: 在service_pricing和service_duration表中添加了附加信息,定价/持续时间取决于weight_range_id以及是否是LH/SH。

最佳答案

should I be rewriting the hospital_id vs service_id information in the service_pricing table?

只要你愿意,就可以。无论哪种方式都有效,只是哪个最方便的问题。如果键是一个字段而不是两个字段,则连接 service_pricingservice_duration 表会更容易一些。

Isn't this repetition of data? I already have this information in Hospital_service table.

不,它不被认为是多余的,因为它是连接记录的键值。您必须在外键中也包含该值才能建立连接。

I am using Laravel's Eloquent ORM for this, so how do I say "get pricing of service 7 of hospital 2" ?

我对那个框架不熟悉,而且 laravel.com 目前似乎已关闭。其 SQL 类似于:

select
  weight_range_id, LH_price, SH_price
from
  service_pricing
where
  hospital_id = 2
  and service_id = 7

如果您决定在 hospital_service 表中添加另一个 ID,则需要加入该表以进行该查询:

select
  p.weight_range_id, p.LH_price, p.SH_price
from
  service_pricing p
  inner join hospital_service hs on hs.is = p.hospical_service_id
where
  hs.hospital_id = 2
  and hs.service_id = 7

关于php - 在其他表中使用关系表的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33277220/

相关文章:

php - 如何从模板文件插入到 <head> 中?

mysql - 相对于多列升序或降序

c# - 无法在 C# 中将行转换为 DataTable

java - 最佳实践 : working with DB in Java

php - `[Exception] DateTime::__construct(): ` 依赖系统的时区设置是不安全的

php - 数据库全选

mysql - SUM 列和 GROUP BY 日期 MySQL (MariaDB)

php - 我正在尝试在 PHP 中做一个类似 ASP 的中继器

python - Wagtail 自定义内联 PageChooser

php - Mysql连接错误