laravel eloquent where子句与pivot

时间:2017-12-05 15:04:01

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

我有三张如下表:

flywayMigrate2

并有一个数据透视表

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

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

  

Auth :: user() - > tags() - > where(' date','<',\ Carbon \ Carbon :: now()) - > orWhere(函数($ q){       $ q-> wherePivot(' tagActive',1);   }) - >首先();

它不起作用。 我必须通过" date<来结帐会员标签。现在"或" tagActive = 1"

  

我怎么能这样做? (看看它在哪里拥有表格列或在哪里转动表格列)

1 个答案:

答案 0 :(得分:1)

尝试更改顺序,以便执行此操作:

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

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