拉拉维尔雄辩的条件取决于某些属性


Laravel Eloquent conditional where depending on certain attribute

我有一个基本的SQL请求,我想在Eloquent query中"转换"它:

SELECT fmd.*, ff.iFormTypeCode
FROM FormMembersData fmd
INNER JOIN FormFields ff USING(iFormFieldCode)
WHERE fmd.iFormMemberCode = ".$iFormMemberCode." AND IF(ff.bLinkCurrentPeriod = 1, fmd.iPeriodCode = ".$iPeriodCode.", fmd.iPeriodCode = 0)

问题是,我不知道如何表示条件以插入正确的周期代码(0 或变量代码)。

目前,这几乎是我设法构建的唯一查询:

$aMemberData = Member::find($id)
->data()
->with('field')
->where('iPeriodCode', '=', $iPeriodCode)
->get();

我最终做了:

Member::find($id)
->data()
->join('fields', 'fields.iFormFieldCode', '=', 'membersData.iFormFieldCode')
->whereRaw('DB::raw('IF(fields.bLinkCurrentPeriod = 1, membersData.iPeriodCode = '.$iPeriodCode.', membersData.iPeriodCode = 0)'))
->get()
->toArray();