Какой тип отношений у этих двух таблиц будет в laravel?

у меня есть четыре таблицы в базе данных:

  1. пользователи (для хранения сведений о пользователе)
  2. разговоры (для хранения идентификатора разговоров).
  3. talksmember (для хранения участников разговоров)
  4. разговоры-ответ (для хранения ответов на разговоры)

У пользователя будет много разговоров, и у каждого разговора будут свои участники и ответы.

вот подробности:

Миграция пользователей:

$table->increments('id');

$table->string('name', 32);
$table->string('username', 32);
$table->string('email', 320);
$table->string('password', 64);

$table->timestamps();

Перенос диалогов:

$table->increments('id');
$table->timestamps();

миграция участников беседы:

$table->increments('id');

$table->integer('conversation_id');
$table->integer('user_id'); 

$table->timestamps();

разговорыответ миграции

$table->increments('id');

$table->integer('conversation_id');
$table->integer('user_id'); 

$table->timestamps();

Теперь в модели пользователя мне нужно определить связь между таблицей пользователей и таблицей бесед. Поскольку они не связаны напрямую, я использовал отношение hasManyThrough.

..приложение/модели/User.php

...
    public function conversations()
        {
            return $this->hasManyThrough('Conversation', 'ConversationsMember', 'conversation_id', 'id');
        }
...

Когда я пытаюсь его использовать, он показывает пустой массив.


person Kanav    schedule 02.04.2014    source источник


Ответы (1)


Я бы попробовал отношение «принадлежит ко многим», где участники разговоров — это ваша сводная таблица.

public function conversations()
{
    return $this->belongsToMany('Conversation', 'conversationsmembers');
}

Вы также можете определить обратное отношение в вашей модели диалога:

public function users()
{
    return $this->belongsToMany('User', 'conversationsmembers');
}

Я немного запутался в вашей миграции, поэтому я не уверен, что вы этого хотите.

person Needpoule    schedule 02.04.2014