У меня есть две таблицы: пользователи и проекты и другая таблица с именем users_project , используемая для связи многих со многими.
Столбцы пользователей : id, имя, фамилия, ... (другие не важны для этого поста)
Колонки проектов: id, реклама, имя, ... (другие не важны для этого поста)
Users_project: user_id, project_id
В моем классе модели User у меня есть два метода:
public function commercial_projects() {
return $this->hasMany('App\Project', 'commercial', 'id');
}
и
public function assigned_projects() {
return $this->belongsToMany(
'App\Project',
'users_project',
'user_id',
'project_id'
);
}
Этот метод работает нормально. Первый возвращает количество проектов, в которых пользователь участвует как коммерческий пользователь. Второй возвращает количество проектов, назначенных пользователю
. Я хочу иметь другой метод, который возвращает все проекты, в которых участвует пользователь (коммерческий или назначенный)
Я написал этот метод следующим образом:
public function projects() {
return $this -> assigned_projects() -> union( $this->commercial_projects() );
}
Но у меня есть ошибка, вызванная столбцом сводки, добавленным отношением ownToMany:
"SQLSTATE[21000]: Cardinality violation: 1222 The used SELECT statements have a different number of columns (SQL: (select `projects`.*, `users_project`.`user_id` as `pivot_user_id`, `users_project`.`project_id` as `pivot_project_id` from `projects` inner join `users_project` on `projects`.`id` = `users_project`.`project_id` where `users_project`.`user_id` = 13) union (select * from `projects` where `projects`.`commercial` = 13 and `projects`.`commercial` is not null))"
Как удалить сводный столбец из запроса базы данных или найти способ исправить эту проблему?
Tnx много