【问题标题】:laravel eloquent where clause with pivotlaravel 雄辩的 where 子句与枢轴
【发布时间】:2018-05-19 07:07:19
【问题描述】:

我有如下三个表:

members
---------
id | tag | hasOn
1  |  1  |   1
2  |  2  |   1
3  |  3  |   0
4  |  1  |   1

tags
---------
id | title | date
1  |   a   |   05.12.2017 00:00:00
2  |   b   |   01.12.2017 00:00:00
3  |   c   |   12.11.2017 00:00:00
4  |   d   |   27.11.2017 00:00:00

并且有一个数据透视表

member_tag
-------------
member_id | tag_id | tagActive
    1     |    1   |    1
    1     |    2   |    1
    1     |    3   |    0
    1     |    4   |    1
    2     |    1   |    1
    2     |    2   |    1
    2     |    3   |    1
    2     |    4   |    1

这是我的代码(Auth::user 指成员模型)

Auth::user()->tags()->where('date', 'orWhere(function($q){ $q->wherePivot('tagActive', 1); })->first();

它不工作。 我必须通过“date

我怎么能这样做? (查看在哪里拥有表列或在哪里透视表列)

【问题讨论】:

  • 你得到什么错误?
  • QueryBuilder::wherePivot 不存在

标签: php laravel pivot-table laravel-5.4 laravel-eloquent


【解决方案1】:

尝试更改顺序,这样你就可以这样做了:

Auth::user()->tags()
    ->wherePivot('tagActive', 1)
    ->orWhere('date', '<', \Carbon\Carbon::now())
    ->first();

wherePivot 仅存在于 BelongsToMany 关系上。它在无范围的 QueryBuilder 上不存在,这就是您在带有闭包的 where 子句中得到的。

【讨论】:

  • ->wherePivot 在 BelongsToMany 中不起作用
猜你喜欢
  • 1970-01-01
  • 2017-05-24
  • 2020-10-26
  • 2019-07-24
  • 2021-02-13
  • 2014-08-23
  • 1970-01-01
  • 2022-01-07
  • 2018-01-10
相关资源
最近更新 更多