2016-08-31 1 views
1

Почему Laravel спрашивает сводную таблицу как единственную в моем коде? Как я могу исправить, чтобы он назывался множественным числом?Laravel Сводная таблица не множественная

Таблицы базы данных

  • пользователей (ID, и т.д.)
  • кампании (идентификаторы и т.д.)
  • campaign_users (user_id, CAMPAIGN_ID)

Код

Моя кампания модель и модель campaign_user в значительной степени пусты и созданы мастером. Но вот мой пользователь отношение к кампаниям, в модели пользователя:

public function playing_campaigns() 
    { 
     return $this->belongsToMany('Sagohamnen\campaign\campaign'); 
    } 

Здесь я называю DB, чтобы получить кампании, в которой пользователь является частью:

$user = user::with(['playing_campaigns'])->where('id', $id)->get(); 

ошибки SQL

SQLSTATE [42S02]: Базовая таблица или представление не найдено: 1146 таблица 'sagohamnen.campaign_user' не существует (SQL:. выберите campaigns *, campaign_user. user_id as pivot_user_id, campaign_user. campaign_id как pivot_campaign_id от campaigns внутренний присоединение campaign_user на campaigns. id = campaign_user. campaign_id, где campaign_user. user_id в (1))

ответ

1

belongsToMany принимает второй параметр для имени таблицы ...

return $this->belongsToMany('Sagohamnen\campaign\campaign', 'campaign_users'); 

Это только стандарты, которые Laravel принимает на себя, чтобы попытаться сделать нашу жизнь проще.

+0

также ознакомьтесь с документацией по другим параметрам, которые вы можете передать. [Многостраничная документация] (https://laravel.com/docs/5.2/eloquent-relationships#many-to-many) – Carlos

+0

Спасибо за ответ. Если вы понимаете право на документацию, не нужно добавлять второй аргумент, если таблицы называются в соответствии с соглашением Laravel. «Красноречивый присоединится к двум связанным именам модели в алфавитном порядке». Hm, хотя я добавил второй аргумент, чтобы увидеть, произошли ли какие-либо изменения. Результатом стал пустой массив, hm. – Olof84

+0

Это алфавитный порядок и единственное, поэтому ваш стол должен быть 'campaign_user'. Если это пустой массив, возвращаемый, убедитесь, что у вас есть данные, вставленные для этого идентификатора пользователя, который вы используете. Это также помогает включить общий журнал в вашу БД и наблюдать за запущенными запросами и убедиться, что они имеют смысл. – user3158900