У нас есть API с сотнями результатов в каждом запросе или, возможно, пост / патч. Мы по-прежнему используем:
'data.relationships.users.data.*.id' => [
'string',
'unique:api_groups,name,' . ($this->route('group')->id ?? 0),
]
Так что для вас
'contacts.*.email' => 'required|email|unique:exists:users,id'
Работает отлично. Это не становится более сложным или что-то еще.
Чтобы достичь желаемого результата, необходимо выполнить фильтрацию предикатов и объединить их в одном операторе.
Dim myCriteria() = {"test", "bed"}
Dim test = from d in _context.Documents _
join p in _context.Plans on d.ID Equals p.ID _
where (myCriteria.Contains(d.Name) OR _
myCriteria.Contains(d.Descrition)) _
OR (myCriteria.Contains(p.Name) OR _
myCriteria.Contains(p.Description)) _
select Document = d.Name, Plan = p.Name
Это происходит потому, что вы делаете «первый проход», который фильтрует планы и документы, соответствующие вашим предикатам, а затем затем объединяют только эти результаты, эффективно выполняя и
. Как сказал Базилио, вы должны выполнить соединение / фильтр за один проход. Вы можете попробовать что-то вроде этого:
Dim test = From d in _context.Documents _
Join p in _context.Plans on d.ID Equals p.ID _
Where predicate1(p) Or predicate2(d)
Select d.Name, p.Name
Или аналогично:
Dim test = From d in _context.Documents _
From p in _context.Plans _
Where d.ID = p.ID And (predicate1(p) Or predicate2(d))
Select d.Name, p.Name