我如何将表导入另一个 class(/object??)以便我可以 运行 在另一个 class/object 中查询它? [圆滑 3.0][scala]
How would I import tables into another class (/object??) so I can run queries on it in the other class/object? [slick 3.0][scala]
我在
中定义了两个 table
class Patients(tag: Tag) extends Table[(String, String, Int, String)](tag, "Patientss") {
def PID = column[String]("Patient Id", O.PrimaryKey)
def Gender = column[String]("Gender")
def Age = column[Int]("Age")
def Ethnicity = column[String]("Ethnicity")
def * = (PID, Gender, Age, Ethnicity)
}
val patientsss = TableQuery[Patients]
class DrugEffect(tag: Tag) extends Table[(String, String, Double)](tag, "DrugEffectss") {
def DrugID = column[String]("Drug ID", O.PrimaryKey)
def PatientID = column[String]("Patient_ID")
def DrugEffectssss = column[Double]("Drug Effect")
def * = (DrugID, PatientID, DrugEffectssss)
def Patient = foreignKey("Patient_FK", PatientID, patientsss)(_.PID)
}
val d_effects = TableQuery[DrugEffect]
我也在这个 object/class 中填写了 table。
我想知道如何在另一个对象中调用填充的 table,这样我就可以将 DrugEffect
和 Patients
作为 class 访问,然后运行 查询 table 本身?
我希望我说清楚了,我真的不知道我在做什么
我所说的 运行ning 查询的意思是这样的:
val q1 = for {
c <- patientsss if (c.Age === 20 && c.Gender === "F")
s <- d_effects if (s.DrugEffectssss > 10.0)
} yield (c.PID, s.DrugID)
但在不同文件中定义的对象中
您需要单独 class 中的数据库 API 和 table。你可以这样做:
import tables.Tables
class SeparateClass extends HasDatabaseConfig[JdbcProfile] {
val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
import driver.api._
def get(id: Long) = {
db.run(Tables.DrugEffect.d_effects.filter(_.id === id).result)
}
}
我在
中定义了两个 table class Patients(tag: Tag) extends Table[(String, String, Int, String)](tag, "Patientss") {
def PID = column[String]("Patient Id", O.PrimaryKey)
def Gender = column[String]("Gender")
def Age = column[Int]("Age")
def Ethnicity = column[String]("Ethnicity")
def * = (PID, Gender, Age, Ethnicity)
}
val patientsss = TableQuery[Patients]
class DrugEffect(tag: Tag) extends Table[(String, String, Double)](tag, "DrugEffectss") {
def DrugID = column[String]("Drug ID", O.PrimaryKey)
def PatientID = column[String]("Patient_ID")
def DrugEffectssss = column[Double]("Drug Effect")
def * = (DrugID, PatientID, DrugEffectssss)
def Patient = foreignKey("Patient_FK", PatientID, patientsss)(_.PID)
}
val d_effects = TableQuery[DrugEffect]
我也在这个 object/class 中填写了 table。
我想知道如何在另一个对象中调用填充的 table,这样我就可以将 DrugEffect
和 Patients
作为 class 访问,然后运行 查询 table 本身?
我希望我说清楚了,我真的不知道我在做什么
我所说的 运行ning 查询的意思是这样的:
val q1 = for {
c <- patientsss if (c.Age === 20 && c.Gender === "F")
s <- d_effects if (s.DrugEffectssss > 10.0)
} yield (c.PID, s.DrugID)
但在不同文件中定义的对象中
您需要单独 class 中的数据库 API 和 table。你可以这样做:
import tables.Tables
class SeparateClass extends HasDatabaseConfig[JdbcProfile] {
val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
import driver.api._
def get(id: Long) = {
db.run(Tables.DrugEffect.d_effects.filter(_.id === id).result)
}
}