【问题标题】:Laravel Eloquent conditional where depending on certain attributeLaravel Eloquent 有条件的取决于某些属性
【发布时间】:2015-03-28 18:13:05
【问题描述】:

我有一个基本的 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();

【问题讨论】:

  • 对于复杂的查询,我建议您坚持使用原始 SQL。您可以运行 DB::select("raw query");如果你需要
  • 好的,谢谢,但如果可能的话,我真的很想知道 Eloquent 是否可行 :)
  • 美丽的头像@lightalex

标签: php sql laravel eloquent


【解决方案1】:

我最终做了:

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

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2023-03-16
    • 2022-07-06
    • 2011-12-17
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多