laravel 雄辩的 where 子句与枢轴
Posted
技术标签:
【中文标题】laravel 雄辩的 where 子句与枢轴【英文标题】:laravel eloquent where clause with pivot 【发布时间】: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 不存在 【参考方案1】:尝试更改顺序,这样你就可以这样做了:
Auth::user()->tags()
->wherePivot('tagActive', 1)
->orWhere('date', '<', \Carbon\Carbon::now())
->first();
wherePivot
仅存在于 BelongsToMany
关系上。它在无范围的 QueryBuilder 上不存在,这就是您在带有闭包的 where 子句中得到的。
【讨论】:
->wherePivot 在 BelongsToMany 中不起作用以上是关于laravel 雄辩的 where 子句与枢轴的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 雄辩的高级 where 子句:未定义的变量 |我使用 use()