我正在处理一个应用程序,在这个应用程序中,一个项的值称为波长。在由模型颜色表示的另一个表中,有许多条目的形式为{id \ start_wavelength \ end_wavelength}。我试图找出如何在项目模型中定义一个关系,它可以根据颜色在范围内的位置获得颜色。
本质上,我需要的是得到start_wavelength大于或等于项目波长值以及end_wavelength值小于项目波长值的颜色。
这是我目前试图做的,但它显然是有效的,因为这种关系不是由主键和外键定义的。
public function color()
{
return $this->belongsTo('App\Color')->where('wavelength', '<=', 'end')->where('wavelength', '>=', 'start');
}有没有更好的方法来做这件事,或者甚至有可能?
发布于 2016-03-13 23:54:49
如果在项和颜色之间没有定义的关系,就无法使用belongsTo方法。相反,只需查询与您的条件匹配的第一个颜色并返回
return Color::where('wavelength', '<=', 'end')->where('wavelength', '>=', 'start')->firstOrFail();或者更好的是:
return Color::whereBetween('wavelength', ['start', 'end'])->firstOrFail();https://stackoverflow.com/questions/35977385
复制相似问题