首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拉勒维尔:根据价值在一个范围内的位置来定义关系?

拉勒维尔:根据价值在一个范围内的位置来定义关系?
EN

Stack Overflow用户
提问于 2016-03-13 23:47:29
回答 1查看 263关注 0票数 0

我正在处理一个应用程序,在这个应用程序中,一个项的值称为波长。在由模型颜色表示的另一个表中,有许多条目的形式为{id \ start_wavelength \ end_wavelength}。我试图找出如何在项目模型中定义一个关系,它可以根据颜色在范围内的位置获得颜色。

本质上,我需要的是得到start_wavelength大于或等于项目波长值以及end_wavelength值小于项目波长值的颜色。

这是我目前试图做的,但它显然是有效的,因为这种关系不是由主键和外键定义的。

代码语言:javascript
运行
复制
public function color()
{
    return $this->belongsTo('App\Color')->where('wavelength', '<=', 'end')->where('wavelength', '>=', 'start');
}

有没有更好的方法来做这件事,或者甚至有可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-13 23:54:49

如果在项和颜色之间没有定义的关系,就无法使用belongsTo方法。相反,只需查询与您的条件匹配的第一个颜色并返回

代码语言:javascript
运行
复制
return Color::where('wavelength', '<=', 'end')->where('wavelength', '>=', 'start')->firstOrFail();

或者更好的是:

代码语言:javascript
运行
复制
return Color::whereBetween('wavelength', ['start', 'end'])->firstOrFail();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35977385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档