Laravel Eloquent получает свойство вложенной нетерпеливой загрузки, которая может существовать или не существовать - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь настроить фильтрацию «транзакций» пользователя после определенной даты. Однако отношение 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);

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Это была синтаксическая ошибка, я должен был использовать массив. Это отлично работает.

$dateFilter = function ($q) use ($filter){
        $q->whereDate('created_at', '>', $filter);
    };
$user = User::with(['hasCustomers.customers.transactions' => $dateFilter]->find($user_id);
0 голосов
/ 25 марта 2019

Попробуйте это:

    User::with('hasCustomers.customers.transactions')
                ->whereHas('hasCustomers', function ($q) use ($filter) {
                    $q->whereHas('customers', function ($q) use ($filter) {
                        $q->whereHas('transactions', function ($q) use ($filter) {
                            $q->whereDate('created_at', '>', $filter);

                        });
                    });
                })->find($user_id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...