Я пытаюсь настроить фильтрацию «транзакций» пользователя после определенной даты.
Однако отношение hasCustomers, клиенты или транзакции может существовать или не существовать.
Это то, что я пробовал до сих пор.
$user = User::with('hasCustomers.customers.transactions', function ($q) use ($filter){
$q->whereDate('created_at', '>', $filter);
})->find($user_id);
Однако выдает ошибку mb_strpos() expects parameter 1 to be string, object given
.
Ожидаемый результат состоит в том, чтобы получить эти «пользовательские» свойства с «транзакциями» после фильтра определенной даты (если существуют «транзакции»).
Есть ли отведения?
EDIT:
Это возвращает правильно, но дата не фильтруется, потому что 'с' не фильтруется.
User::with('hasCustomers.customers.transactions')
->whereHas('hasCustomers.customers.transactions', function ($q) use ($filter){
$q->whereDate('created_at', '>', $filter);
})->find($user_id);
EDIT:
Это была синтаксическая ошибка, я должен был использовать массив. Это отлично работает.
$dateFilter = function ($q) use ($filter){
$q->whereDate('created_at', '>', $filter);
};
$user = User::with(['hasCustomers.customers.transactions' => $dateFilter]->find($user_id);