Laravel Eloquent条件取决于某些属性

时间:2015-01-29 13:34:23

标签: php sql laravel eloquent

我有一个基本的SQL请求,我想在Eloquent查询中'转换':

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或变量1)。

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

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

1 个答案:

答案 0 :(得分:0)

我最终做了:

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();