Предполагая, что пользователи сообщества - это модель, которая отображает вашу таблицу отношения многих к многим, вы должны указать правильное имя таблицы в базе данных для этой модели.
class CommunityUsers extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'community_users';
}
Кроме того, имейте в виду, что Eloquent не поддерживает составные первичные ключи , поэтому вы должны установить community_id
или user_id
как первичный ключ в CommunityUsers
модель для использования метода find()
, в противном случае Laravel будет искать по столбцу id
.
Я бы лучше вставил новый основной столбец автоинкремента в таблицу отношений и получил бы отдельное сообщество с фильтрацией where, например:
CommunityUsers::where('community_id', $id)->first();
Примечание: Вы также можете сделать этот фильтр как CommunityUsers
метод области действия.
Кроме того, обратите внимание, что ваше отношение от Users
до CommunityUsers
является отношением один ко многим (один User
соответствует многим парам CommunityUsers
([community_id, user_id]))
Переосмысление отношения отношений
Если вы рассмотрите три таблицы, которые можно смоделировать как отношение многие ко многим между Users
и Communities
.
Отношения должны быть:
Модель: пользователь
class User extends Authenticatable
{
public function communities()
{
return $this->belongsToMany(EventCategories::class, 'community_user', 'user_id', 'community_id');
}
}
Модель: EventCategories (Предполагается, что это модель вашего сообщества)
class EventCategories extends Model
{
public function users()
{
return $this->belongsToMany(User::class, 'community_user', 'community_id');
}
}
Примечание: Приведенный выше код может потребовать доработки в зависимости от ваших моделей и определений их таблиц.
После этого определения отношения вы можете использовать его непосредственно на модели EventCategories
:
public function communityBySlug($slug){
$eventCategory = EventCategories::with('users')
->whereSlug($slug)
->first();
return Response::json(
[
'data' => $eventCategory,
'community_followers' => $eventCategory->users
]
);
}