Scala Slick 3.0.0-如何使用joinLeft对查询进行排序
这个问题涉及到。我还尝试在slick 3.0.0中使用joinLeft对查询进行排序。当选项Rep自动取消时,我将如何做完全相同的事情Scala Slick 3.0.0-如何使用joinLeft对查询进行排序,scala,playframework,slick,slick-3.0,play-slick,Scala,Playframework,Slick,Slick 3.0,Play Slick,这个问题涉及到。我还尝试在slick 3.0.0中使用joinLeft对查询进行排序。当选项Rep自动取消时,我将如何做完全相同的事情 def list(filter: String, orderBy: Int):Future[Seq[(Computer, Option[Company])]] = { val initialQuery = for { (computer, company) <- Computer.filter(_.name like filter)
def list(filter: String, orderBy: Int):Future[Seq[(Computer, Option[Company])]] = {
val initialQuery = for {
(computer, company) <- Computer.filter(_.name like filter) leftJoin
Company on (_.companyId === _.id)
} yield (computer, company)
val sortedQuery = orderBy match {
case 2 => initialQuery.sortBy(_._1.name) //Works ok, column from a primary table
case 3 => initialQuery.sortBy(_._2.map(_.name)) //could not find implicit value for parameter ol: slick.lifted.OptionLift[slick.lifted.ColumnOrdered[String],slick.lifted.Rep[Option[QO]]]
}
db.run(sortedQuery.result)
}
def列表(过滤器:字符串,订货人:Int):未来[Seq[(计算机,选项[Company])]={
val initialQuery=for{
(计算机,公司)initialQuery.sortBy(u._1.name)//工作正常,主表中的列
案例3=>initialQuery.sortBy(u.\u 2.map(u.name))//找不到参数ol的隐式值:slick.lifted.OptionLift[slick.lifted.ColumnOrdered[String],slick.lifted.Rep[Option[QO]]
}
db.run(sortedQuery.result)
}
谢谢,您确定复制了正确的代码吗
case 3 => data.sortBy(_._2.map(_.name) //could not find implicit value for parameter
缺少一个“)”
应该是
case 3 => data.sortBy(_._2.map(_.name))
我想缺少括号只是一个输入错误。最近,当我使用您的示例在错误的位置指定排序方向时,我遇到了这个问题:
case 3 => initialQuery.sortBy(_._2.map(_.name.asc))
val initialQuery = for {
(computer, company) <- Computer.filter(_.name like filter) leftJoin Company on (_.companyId === _.id)
} yield (computer, company, company.map(_.name))
val sortedQuery = orderBy match {
case 2 => initialQuery.sortBy(_._1.name)
case 3 => initialQuery.sortBy(_._3)
}
db.run(sortedQuery.map(v => (v._1, v._2).result)
initialQuery.sortBy(_._2.map(_.name).getOrElse(""))
应该是:
case 3 => initialQuery.sortBy(_._2.map(_.name).asc)
您可以将字段放入结果集中。 例如:
case 3 => initialQuery.sortBy(_._2.map(_.name.asc))
val initialQuery = for {
(computer, company) <- Computer.filter(_.name like filter) leftJoin Company on (_.companyId === _.id)
} yield (computer, company, company.map(_.name))
val sortedQuery = orderBy match {
case 2 => initialQuery.sortBy(_._1.name)
case 3 => initialQuery.sortBy(_._3)
}
db.run(sortedQuery.map(v => (v._1, v._2).result)
initialQuery.sortBy(_._2.map(_.name).getOrElse(""))
val initialQuery=for{
(计算机、公司)initialQuery.sortBy(u._1.name)
案例3=>initialQuery.sortBy(u._3)
}
run(sortedQuery.map(v=>(v.。_1,v._2.result)
我也遇到了这个问题。我有一个joinLeft,我想对布尔列进行排序。您必须确定它的join何时为空,您想用什么值替换它
例如:
case 3 => initialQuery.sortBy(_._2.map(_.name.asc))
val initialQuery = for {
(computer, company) <- Computer.filter(_.name like filter) leftJoin Company on (_.companyId === _.id)
} yield (computer, company, company.map(_.name))
val sortedQuery = orderBy match {
case 2 => initialQuery.sortBy(_._1.name)
case 3 => initialQuery.sortBy(_._3)
}
db.run(sortedQuery.map(v => (v._1, v._2).result)
initialQuery.sortBy(_._2.map(_.name).getOrElse(""))
谢谢你的回答,不过是的,这只是个打字错误。