sind habe ich eine MySQL-Abfrage, wo ich auf zwei Werte kommen, wenn sie +/- ‚3‘ voneinander:Laravel ‚kommen auf‘, wo zwei Werte innerhalb ‚x‘ voneinander
...
inner join
on ABS(i.direction - i2.MWD) < 3
and ABS(i.direction - i2.MWD) < 3
(ich bin nicht ganz sicher, warum die ‚und‘ Aussage ist genau die gleiche, aber das ist, was machte es funktioniert)
ich habe versucht, dies zu Eloquent Umwandlung sowohl mit
$join->on('i.direction', '-', 'i2.MWD', '<' 3)
und
Die obigen zwei Beispiele geben mir ein leeres Ergebnis. Wenn ich die '' zu '>' in jedem Beispiel ändere, bekomme ich alle verbundenen Daten aus beiden Tabellen.
Ich habe auch versucht, mit DB :: roh als Behelfslösung:
$join->on(DB::raw('ABS(input.direction - i2.MWD) < 3
and ABS(input.direction - i2.MWD) < 3'));
die mir die folgenden Fehler gibt:
SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'on clause'
(SQL: select count(*) as aggregate
from (select * from `input`
inner join
(select MWD, SWH, SWP, BUOY,Time from stations order by Time desc limit 4)
as i2 on ABS(input.direction - i2.MWD) < 3
and ABS(input.direction - i2.MWD) < 3 = ``) count_row_table)
(den nachgestellten = '', die nach eingeführt wird die 'i2.MWD) < 3' verwirrte mich).
Ich wäre sehr dankbar, wenn jemand mir helfen könnte, eine Lösung zu finden, um die beiden Werte i.direction & i2.MWD (plus oder minus 3) mit Eloquent zu verbinden.
Ich habe versucht, wie Sie vorgeschlagen: ($ join-> on ('i.direction', '=', 'i2.MWD') -> whereRaw ('i.direction - i2.MWD ', [3 ]); aber ich bekomme immer noch nur Ergebnisse, wo "i.direction" eine exakte Übereinstimmung von "i2.MWD" ist. Es scheint, dass die Join-Anweisung nur mit dem ersten Kriterium übereinstimmt und es nicht zur whereRaw-Anweisung macht. – TomAudre