我在Laravel中有两个模型,我需要它们之间有特定的关系。
父模型Track
与Wire
具有这种关系:
public function wire()
{
return $this->hasMany('App\Wire', 'machineID', 'machineID');
}
此关系有效,但是我需要限制它。Track
中的每一行都有两个值:date_from
和date_to
。每个Wire
都有一个值date
。
我需要将关系限制为在父级Wire
的date
和date_from
之间具有date_to
的那些Track
。
我确定必须有一种方法,但是我尝试了以下操作(如下),但没有任何效果。
感谢您的所有帮助!
方法1
public function wire()
{
return $this->hasMany('App\Wire', 'machineID', 'machineID')
->whereBetween("wire.date", ["track.dateFrom", "track.dateTo"];
}
方法2
->with(["wire" => function($query) {
$query->whereBetween("wire.date", ["track.dateFrom", "track.dateTo"]);
}]);
使用WhereHas可以过滤轨道参考线,因此仅显示轨道在两个日期之间具有线:
Track::WhereHas("wire", function($query) {
$query->whereBetween("wire.date", ["track.dateFrom", "track.dateTo"])->get();
});