Я отредактировал вопрос, так как моя первая попытка полностью вводила в заблуждение.Извините за это.
Я строю API с Laravel и имею следующие модели / таблицы:
user
---
id
name
customers
---
id
name
user_id
projects
---
id
name
user_id
customer_id (can be NULL)
Проект всегда принадлежит пользователю и, опционально, может также принадлежатьклиент.Клиент всегда принадлежит пользователю.Например:
users = [
{id: 1, name: "user1"},
{id: 2, name: "user2"}
]
customers = [
{id: 1, name: "c1", user_id: 1},
{id: 2, name: "c2", user_id: 1},
{id: 3, name: "c3", user_id: 2}
]
projects = [
{id: 1, name: "p1", user_id: 1},
{id: 2, name: "p2", user_id: 1, customer_id: 1},
{id: 3, name: "p3", user_id: 2, customer_id: 2}
]
Как предотвратить создание кем-либо недействительных данных в БД путем создания или обновления проекта с помощью customer_id, который принадлежит клиенту другого пользователя, а затем user_id проекта,Например:
newProject = {id: 4, name: "p4", user_id: 1, customer_id: 3}
Как видите, новый проект должен принадлежать пользователю 1и клиент 3, что невозможно.