【发布时间】:2014-12-31 09:18:37
【问题描述】:
我有两个模型,User 和 Training。它们与is_speaker 和is_creator 等附加数据透视字段具有多对多关系。我想:
- 获取指定列值的所有用户,例如:
SELECT * FROM users WHERE business_unit = Finance; - 获取关联的
trainings,其中透视列值为is_speaker = true;
换句话说,访问者搜索其(第一位)发言人属于指定业务部门的所有培训。
这是我迄今为止尝试过的:
$bu_users = $this->user->where( 'business_unit', $business_unit )->get();
$speakerTrainings = $bu_users->trainings()->wherePivot( 'is_speaker', true )->get();
dd( $speakerTrainings );
// Returns: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'pivot' in 'where clause' (SQL: select * from `trainings` where (select count(*) from `users` inner join `training_user` on `users`.`id` = `training_user`.`user_id` where `training_user`.`training_id` = `trainings`.`id` and `business_unit` = Finance and `users`.`is_active` = 1) >= 1 and `pivot` = is_speaker)
.
$bu_trainings = $this->training->with( 'users' )
->where( 'business_unit', '=', $business_unit )
->wherePivot( 'is_speaker', true)
->get();
dd( $bu_trainings );
// Returns: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'business_unit' in 'where clause' (SQL: select * from `trainings` where `business_unit` = Finance and `pivot` = is_speaker)
【问题讨论】:
标签: laravel filter many-to-many eloquent