Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 15.07.2017 11:38:46

Подскажите как правильно сделать связи

Версия Laravel в формате 5.4.28
Версия PHP в формате 7
Операционная система и её версия ( Windows 10 x64 )
Вендор и версия сервера БД ( MySQL 5.55 )
Вендор и версия Веб-сервера Nginx 1.6.2

Есть таблица Users с полем id. Есть таблица Comments с полями to_id | text | from_id.
На странице профиля каждого из пользователей есть блок с комментариями. Когда публикуется комментарий, то id пользователя, который оставляет коммент, записывается в from_id, а id пользователя, на чьей странице происходит действие, записывается в to_id.
Соответственно вопрос - как правильно прописать связи, чтобы всё было по фен-шую)
Чтобы на странице профиля можно было бы получить все комменты, например, через $user->comments(). А когда пользователь добавлял бы комментарий, то достаточно бы было сделать что-то на подобии $comment->save($request->all()).

Не в сети

#2 15.07.2017 12:31:32

Re: Подскажите как правильно сделать связи

Вопрос из разряда "Не хочу документацию читать, сделайте мне по-бырому". В документации про связи написано очень доступно. Кроме того, я бы посоветовал глянуть в сторону уже готовых пакетов для комментариев. Даже хотя бы в качестве примера кода и связей, например, https://github.com/actuallymab/laravel-comment

Изменено Sergant210 (15.07.2017 12:40:32)

Не в сети

#3 15.07.2017 12:37:55

Re: Подскажите как правильно сделать связи

Связь многие ко многим. Нужно определить две связи belongsToMany() между моделью User и User, при этом ключи вручную вбить в связь. Таблица comments здесь - это промежуточная таблица (pivot).

https://laravel.ru/docs/v5/eloquent-relationships#mm

Не в сети

#4 15.07.2017 13:35:34

Re: Подскажите как правильно сделать связи

Связь многие ко многим. Нужно определить две связи belongsToMany() между моделью User и User, при этом ключи вручную вбить в связь. Таблица comments здесь - это промежуточная таблица (pivot).

Хорошая идея, спасибо! А почему нужно "ключи вручную вбить в связь" ? Я не могу сделать в миграции так?:

$table->foreign('from_id')->references('id')->on('users');
$table->foreign('to_id')->references('id')->on('users');

Не в сети

#5 15.07.2017 14:20:06

Re: Подскажите как правильно сделать связи

В миграциях само собой. Я говорю о вбивании ключей при создании связи. Пример из доков:

return $this->belongsToMany('App\Role', 'role_user', 'user_id', 'role_id');

Не в сети

Подвал раздела