我有以下原始SQL,我正在尝试将其转换为Eloquent形式:
<meta charset="UTF-8">
<meta name=viewport content="width=device-width, initial-scale=1">
我制作了以下内容并且我遇到了一个错误,说'10'不是一个列。 10是$ this-&gt; currentPerson-&gt; defaultOrgID
的值 SELECT oe.eventID, oe.eventName, oet.etName, date_format(oe.eventStartDate, '%c/%d/%Y') as eventStartDate,
date_format(oe.eventEndDate, '%c/%d/%Y') AS eventEndDate
FROM `org-event` oe
JOIN `org-event_types` oet on oe.eventTypeID=oet.etID and oet.orgID=?
JOIN `event-registration` er on er.eventID = oe.eventID
WHERE (er.regStatus='Active' or er.regStatus='In Progress') AND personID=? AND oe.deleted_at is NULL
ORDER BY oe.eventStartDate DESC
我删除了deleted_at where子句,因为这是自动使用eloquent。
答案 0 :(得分:0)
您必须加入相应的外键:oe.eventTypeID=oet.etID
,然后提供一个where
,说明您希望过滤结果的内容,即->where('orgID','=',$this->currentPerson->defaultOrgID)
。
DB::table('org-event')
->join('org-event_types', function($join) {
$join->on('org-event_types.etID', '=', 'org-event.eventTypeID');
$join->on('org-event_types.orgID', '=', 'org-event.eventTypeID')->where('orgID','=',$this->currentPerson->defaultOrgID);
})->join('event-registration', 'event-registration.eventID', '=', 'org-event.eventID')
->where('event-registration.personID', '=', auth()->user()->id)
->where(function($w) {
$w->where('event-registration.regStatus', '=', 'Active')
->orWhere('event-registration.regStatus', '=', 'In Progress');
})
->select('org-event.eventID', 'eventName', 'etName', 'eventStartDate', 'eventEndDate')
->orderBy('org-event.eventStartDate')->get();