Эй, как я могу установить отношения между двумя таблицами.Laravel отношения между двумя таблицами с двумя внешними ключами
Users: id, email
Notification: id, user_id(id of the logged user), client_id(id of sender)
Я хотел бы установить связь между пользователями и уведомлениями user_id и client_id. Тогда я могу получить все уведомления, назначенные зарегистрированному пользователю, и получить электронную почту от пользователей-отправителей.
Я сделал, что:
public function notifications_with_client() {
return $this->hasManyThrough('App\Models\User', 'App\Models\Notification', 'user_id', 'id', 'client_id');
}
Но когда я с помощью запроса я получил хорошие уведомления, но с неправильным по электронной почте. я получил письмо от ralationship идентификатора (из таблицы пользователей) == идентификатор (из таблицы уведомлений)
Мой запрос
$column = 'notifications_with_client';
$value[1] = ['email', 'notifications.id', 'client_id'];
$query->with([$column => function($query) use ($value) {
$query->select($value[1]);
}]);
Кто-то знает, что я делаю не так?
Я думаю, что вам нужно сделать многие ко многим? – Buglinjo
Было бы очень полезно, если бы вы могли опубликовать, на какой модели у вас есть эти отношения. И что такое ссылка 'client_id'? Я предполагаю, что пользователи. Если это так, то у вас действительно есть отношения «многие ко многим». – devk
Вы не можете использовать '$ this-> hasManyThrough()' здесь, используйте '$ this-> belongsesTo()', как я упоминал в моем ответе ниже – Gayan